PostgreSQL auf Mac OS X, diesmal mit Syslog-Logging

Ich hatte vor einer Weile geschrieben, wie man PostgreSQL auf Mac OS X sauber installiert. Das klappt zwar prima, doch die Logfiles waren ein wenig chaotisch. Bei der Installation von PostgreSQL 8.2 habe ich also beschlossen, via Syslog zu loggen. Die eigentliche Installation läuft wie im letzten Artikel beschrieben ab. Erst bei Punkt 10 mußte ich von der alten Anleitung abweichen.

In der /Users/Shared/PostgreSQL/data/postgresql.conf habe ich folgende Änderungen durchgeführt:

--- postgresql.conf.orig  2006-12-08 13:29:39.000000000 +0100
+++ postgresql.conf 2006-12-08 13:31:28.000000000 +0100
@@ -221,6 +221,7 @@

 # - Where to Log -

+log_destination = "syslog"
 #log_destination = 'stderr'    # Valid values are combinations of
          # stderr, syslog and eventlog,
          # depending on platform.
@@ -252,6 +253,7 @@

 # These are relevant when logging to syslog:
 #syslog_facility = 'LOCAL0'
+syslog_facility = 'LOCAL1'
 #syslog_ident = 'postgres'

@@ -313,6 +315,7 @@
 #log_connections = off
 #log_disconnections = off
 #log_duration = off
+log_line_prefix = '%u@%h:/%d '
 #log_line_prefix = ''      # Special values:
          #   %u = user name
          #   %d = database name
@@ -331,6 +334,7 @@
          #   %% = '%'
          # e.g. '<%u%%%d> '
 #log_statement = 'none'      # none, ddl, mod, all
+log_statement = 'all'
 #log_hostname = off

Damit habe ich PostgreSQL gesagt, es möge seine Nachrichten an den Syslog senden. Nun muß der Syslog noch wissen, was er damit anstellen soll. Das steht in der /etc/syslog.conf.

--- syslog.conf.orig  2006-12-08 13:34:26.000000000 +0100
+++ syslog.conf 2006-12-08 13:34:11.000000000 +0100
@@ -17,5 +17,6 @@
 install.*            /var/log/install.log
 install.*            @127.0.0.1:32376
 local0.*           /var/log/ipfw.log
+local1.*           /var/log/pgsql/pgsql.log

 *.emerg              *

Fast geschafft. Jetzt mußte ich nur noch aus dem Launchd-Skript die Zeilen entfernen, die dem PostgreSQL-Server gesagt haben, daß er sich selbst um die Logfiles kümmern soll.

--- org.postgresql.postmaster.plist.orig  2006-12-08 13:37:13.000000000 +0100
+++ org.postgresql.postmaster.plist 2006-12-08 13:37:25.000000000 +0100
@@ -15,10 +15,6 @@
    <string>redirect_stderr=YES</string>
    <string>-c</string>
    <string>log_connections=YES</string>
-   <string>-c</string>
-   <string>log_directory=/var/log/pgsql</string>
-   <string>-c</string>
-   <string>log_filename=postgres_log</string>
  </array>
  <key>ServiceDescription</key>
  <string>PostgreSQL Server</string>

Dann habe ich nur noch ein leeres Logfile für den Syslog mit sudo touch /var/log/pgsql/pgsql.log angelegt. (Es könnte nötig sein, vorher das dazugehörige Verzeichnis mit sudo mkdir /var/log/pgsql anzulegen). Damit der Syslog nun seine Konfigurationsdatei neu einliest, habe ich ihn mit sudo killall -HUP syslogd angeregt, sich zu restarten.

Nun kann der PostgreSQL wie in der alten Anleitung gestartet werden.

Leave a Reply

Your email address will not be published.