Registrazione su un file nel servizio di Windows PostgreSQL


11

Ho bisogno di un'alternativa per eseguire il comando seguente:

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

In questo modo il server si avvia e accede C:\yyy\log\pgsql.log. Quando provo a registrare il server come servizio, non sono disponibili opzioni di registrazione e il server accede al Visualizzatore eventi. Dalla documentazione di pg_ctl:

pg_ctl register [-N nome servizio] [-U username] [-P password] [-D datadir] [-S a [uto] | d [emand]] [-w] [-t secondi] [-s] [-o opzioni]

Come posso forzare il server ad accedere a un file? Nota: non voglio usare il programma di installazione con un clic, voglio solo lavorare con file binari decompressi.


Assicurati di abilitato l' log_statementadlog_statement = 'all'
Chris

Risposte:


13

Individua il tuo postgresql.confnel datadir

Trova la sezione simile a questa

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

semplicemente decommenta e usa questi parametri. Quindi, riavvia il servizio Postgres,

Dato che stai eseguendo postgresql in Windows, è possibile che non ti sia permesso di modificare postgresql.confmentre il servizio è attivo. Se questo è il caso:

  • chiudere il servizio Postgres
  • modificare postgresql.conf
  • avviare il servizio postgres

Provaci !!!


Grazie per avermi indicato la giusta direzione, Rolando, ma la tua risposta non è giusta ... Dato che citi il ​​file di configurazione, puoi avere solo stderr, csvlog, syslog, eventloglì. Ho dovuto cambiare le seguenti proprietà invece: logging_collector = on, log_directory = ..., log_filename=.... Se modifichi la tua risposta, la accetterò.
Vic

1
Ehi Vic, grazie. Sono un principiante in PostgreSQL e fornisco supporto secondario per questo. Sono solo un vecchio DBA MySQL.
RolandoMySQLDBA,

1
log_directory = 'C: / Users / Peter / Documents / jonbloe / system / logs' ha funzionato per me. Ma non usare Windows "\" perché funziona come una fuga e i registri finiscono in una cartella PGDATA / UsersPeterDocumentsjonbloesystemlogs
peter2108
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.