Вход в файл в службе Windows PostgreSQL

11

Мне нужна альтернатива для запуска следующей команды:

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

Таким образом, сервер запускается и входит в систему C:\yyy\log\pgsql.log. Когда я пытаюсь зарегистрировать сервер в качестве службы, опции логирования недоступны, и сервер регистрирует в Event Viewer. Из документации pg_ctl:

pg_ctl register [-N имя_службы] [-U имя пользователя] [-P пароль] [-D datadir] [-S a [uto] | d [emand]] [-w] [-t секунд] [-s] [-o опции]

Как я могу заставить сервер войти в файл? Примечание: я не хочу использовать установщик одним щелчком, я просто хочу работать с разархивированными двоичными файлами.

Vic
источник
Убедитесь , что вы включили log_statementвlog_statement = 'all'
Chris

Ответы:

13

Найдите свой postgresql.confв датадир

Найдите раздел, который выглядит следующим образом

#------------------------------------------------------------------------------
# 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,

Так как вы запускаете postgresql в Windows, возможно, вам не разрешат редактировать, postgresql.confпока сервис работает. Если это так:

  • отключить службу postgres
  • редактировать postgresql.conf
  • запустить сервис postgres

Попробуйте!

RolandoMySQLDBA
источник
Спасибо, что указал мне верное направление, Роландо, но ваш ответ просто не верен ... Когда вы цитируете файл конфигурации, вы можете получить его только stderr, csvlog, syslog, eventlogтам. Я должен был изменить следующие свойства вместо: logging_collector = on, log_directory = ..., log_filename=.... Если вы отредактируете свой ответ, я приму его.
Вик
1
Привет, Вик, спасибо. Я новичок в PostgreSQL и оказываю небольшую поддержку. Я просто старая страна MySQL DBA.
RolandoMySQLDBA
1
log_directory = 'C: / Users / Peter / Documents / jonbloe / system / logs' работал для меня. Но не используйте Windows '\', поскольку она работает как escape, и журналы заканчиваются в папке PGDATA / UsersPeterDocumentsjonbloesystemlogs
peter2108