Logowanie do pliku w usłudze Windows PostgreSQL

11

Potrzebuję alternatywy dla uruchomienia następującego polecenia:

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

W ten sposób serwer uruchamia się i loguje do C:\yyy\log\pgsql.log. Kiedy próbuję zarejestrować serwer jako usługę - żadne opcje rejestrowania nie są dostępne, a serwer loguje się do Podglądu zdarzeń. Z dokumentacji pg_ctl:

rejestr pg_ctl [-N nazwa usługi] [-U nazwa użytkownika] [-P hasło] [-D datadir] [-S a [uto] | d [emand]] [-w] [-t sekundy] [-s] [-o opcje]

Jak zmusić serwer do zalogowania się do pliku? Uwaga: Nie chcę używać instalatora za pomocą jednego kliknięcia, chcę po prostu pracować z rozpakowanymi plikami binarnymi.

Vic
źródło
Upewnij się, że pozwoliły log_statementnalog_statement = 'all'
Chris

Odpowiedzi:

13

Znajdź swój postgresql.confw katalogu danych

Znajdź sekcję, która wygląda następująco

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

po prostu odkomentuj i użyj tych parametrów. Następnie uruchom ponownie usługę postgres,

Ponieważ korzystasz z Postgresql w systemie Windows, możliwe, że nie będziesz mieć możliwości edycji, postgresql.confgdy usługa jest uruchomiona. Jeśli tak jest:

  • zamknij usługę postgres
  • edytować postgresql.conf
  • uruchom usługę postgres

Spróbuj !!!

RolandoMySQLDBA
źródło
Dzięki, że wskazałeś mi właściwy kierunek, Rolando, ale twoja odpowiedź jest po prostu nieprawidłowa ... Cytując plik konfiguracyjny, możesz go tylko stderr, csvlog, syslog, eventlogtam mieć . Musiałem zamiast zmienić następujące właściwości: logging_collector = on, log_directory = ..., log_filename=.... Jeśli edytujesz swoją odpowiedź, zaakceptuję ją.
Vic
1
Hej Vic, dzięki. Jestem nowicjuszem w PostgreSQL i zapewniam niewielkie wsparcie. Jestem tylko starym krajem MySQL DBA.
RolandoMySQLDBA
1
log_directory = 'C: / Users / Peter / Documents / jonbloe / system / logs' pracowało dla mnie. Ale nie używaj „\” systemu Windows, ponieważ działa on jako ucieczka, a dzienniki kończą się w folderze PGDATA / UsersPeterDocumentsjonbloesystemlogs
peter2108