Masuk ke file di layanan windows PostgreSQL

11

Saya perlu alternatif untuk menjalankan perintah berikut:

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

Dengan cara ini server mulai dan masuk C:\yyy\log\pgsql.log. Ketika saya mencoba mendaftarkan server sebagai layanan - tidak ada opsi logging tersedia dan server log ke Event Viewer. Dari dokumentasi pg_ctl:

pg_ctl daftar [-N servicename] [-U username] [-P password] [-D datadir] [-S a [uto] | d [emand]] [-w] [-t detik] [-s] [-o opsi]

Bagaimana saya bisa memaksa server untuk masuk ke file? Catatan: Saya tidak ingin menggunakan penginstal satu klik, saya hanya ingin bekerja dengan binari yang tidak di-zip.

Vic
sumber
Pastikan Anda mengaktifkan log_statementtolog_statement = 'all'
Chris

Jawaban:

13

Temukan lokasi Anda postgresql.confdi datadir

Temukan bagian yang terlihat seperti ini

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

cukup batalkan komentar dan gunakan parameter ini. Kemudian, restart layanan postgres,

Karena Anda menjalankan postgresql di Windows, ada kemungkinan bahwa Anda mungkin tidak diizinkan untuk mengedit postgresql.confsaat layanan ini berjalan. Jika itu masalahnya:

  • matikan layanan postgres
  • sunting postgresql.conf
  • mulai layanan postgres

Cobalah !!!

RolandoMySQLDBA
sumber
Terima kasih telah mengarahkan saya ke arah yang benar, Rolando, tetapi jawaban Anda tidak benar ... Ketika Anda mengutip file konfigurasi, Anda hanya bisa mendapatkannya di stderr, csvlog, syslog, eventlogsana. Aku harus mengubah sifat-sifat berikut ini sebagai gantinya: logging_collector = on, log_directory = ..., log_filename=.... Jika Anda mengedit jawaban Anda, saya akan menerimanya.
Vic
1
Hai Vic, terima kasih. Saya seorang pemula di PostgreSQL dan memberikan dukungan kecil untuk itu. Saya hanya negara lama MySQL DBA.
RolandoMySQLDBA
1
log_directory = 'C: / Users / Peter / Documents / jonbloe / system / logs' bekerja untuk saya. Tapi jangan gunakan Windows '\' karena berfungsi sebagai pelarian dan log berakhir di folder PGDATA / UsersPeterDocumentsjonbloesystemlogs
peter2108