PostgreSQL Windows 서비스에서 파일에 로깅


11

다음 명령을 실행하기위한 대안이 필요합니다.

C:\xxx\pgsql\bin\pg_ctl" -D "C:\xxx\pgsql\data" -l "C:\yyy\log\pgsql.log" start.

이렇게하면 서버가 시작되고에 로그인합니다 C:\yyy\log\pgsql.log. 그래도 서버를 서비스로 등록하려고하면 사용 가능한 로깅 옵션이없고 서버가 이벤트 뷰어에 기록됩니다. pg_ctl 문서에서 :

pg_ctl register [-N servicename] [-U username] [-P password] [-D datadir] [-S a [uto] | d [emand]] [-w] [-t 초] [-s] [-o 옵션]

서버가 파일에 강제로 로그인하도록하려면 어떻게해야합니까? 참고 : 원 클릭 설치 프로그램을 사용하고 싶지 않으며 압축이 풀린 바이너리로 작업하고 싶습니다.


다음을 활성화해야 log_statement합니다log_statement = 'all'
Chris

답변:


13

postgresql.confdatadir에서 귀하 를 찾으십시오.

다음과 같은 섹션을 찾으십시오.

#------------------------------------------------------------------------------
# ERROR REPORTING AND LOGGING
#------------------------------------------------------------------------------

# - Where to Log -

#log_destination = 'stderr'             # Valid values are combinations of
                                        # stderr, csvlog, syslog and eventlog,
                                        # depending on platform.  csvlog
                                        # requires logging_collector to be on.

# This is used when logging to stderr:
#logging_collector = off                # Enable capturing of stderr and csvlog
                                        # into log files. Required to be on for
                                        # csvlogs.
                                        # (change requires restart)

# These are only used if logging_collector is on:
#log_directory = 'pg_log'               # directory where log files are written,
                                        # can be absolute or relative to PGDATA
#log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'        # log file name pattern,
                                        # can include strftime() escapes
#log_truncate_on_rotation = off         # If on, an existing log file of the
                                        # same name as the new log file will be
                                        # truncated rather than appended to.
                                        # But such truncation only occurs on
                                        # time-driven rotation, not on restarts
                                        # or size-driven rotation.  Default is
                                        # off, meaning append to existing files
                                        # in all cases.
log_rotation_age = 7d                   # Automatic rotation of logfiles will
                                        # happen after that time.  0 disables.
#log_rotation_size = 10MB               # Automatic rotation of logfiles will
                                        # happen after that much log output.
                                        # 0 disables.

주석을 해제하고이 매개 변수를 사용하십시오. 그런 다음 postgres 서비스를 다시 시작하십시오.

Windows에서 postgresql을 실행하고 있기 때문에 postgresql.conf서비스가 작동하는 동안 편집이 불가능할 수 있습니다 . 이 경우 :

  • postgres 서비스 종료
  • 편집하다 postgresql.conf
  • postgres 서비스를 시작하십시오

시도 해봐 !!!


올바른 방향으로 Rolando를 알려 주셔서 감사합니다. 그러나 귀하의 대답은 옳지 않습니다 ... 구성 파일을 인용 할 때 stderr, csvlog, syslog, eventlog거기 에만있을 수 있습니다. 대신 다음 속성을 변경해야했습니다 logging_collector = on, log_directory = ..., log_filename=.... 답변을 수정하면 수락하겠습니다.
Vic

1
빅, 고마워 나는 PostgreSQL의 초보자이며 약간의 지원을 제공합니다. 나는 단지 옛날 나라 MySQL DBA입니다.
RolandoMySQLDBA

1
log_directory = 'C : / Users / Peter / Documents / jonbloe / system / logs'가 나를 위해 일했습니다. 이 탈출로 작동하고 로그 폴더 PGDATA / UsersPeterDocumentsjonbloesystemlogs에서 생을 마감하지만 윈도우를 '\'사용하지 않는
peter2108
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.