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:
+log_destination = "syslog"
#log_destination = 'stderr' # Valid values are combinations of
# stderr, syslog and eventlog,
# depending on platform.
# These are relevant when logging to syslog:
#syslog_facility = 'LOCAL0'
+syslog_facility = 'LOCAL1'
#syslog_ident = 'postgres'
#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
# %% = '%'
# e.g. '<%u%%%d> '
#log_statement = 'none' # none, ddl, mod, all
+log_statement = 'all'
#log_hostname = off
# - Where to Log -
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
.
+local1.* /var/log/pgsql/pgsql.log
*.emerg *
install.* /var/log/install.log
install.* @127.0.0.1:32376
local0.* /var/log/ipfw.log
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.
- <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>
<string>redirect_stderr=YES</string>
<string>-c</string>
<string>log_connections=YES</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.