Als ich anfing, mir ein Logfile-Analyse-Werkzeug zu bauen, merkte ich, dass der
Standard syslog Dämon von Linux und vielen Unix-Systemen doch erhebliche
Einschränkungen mit sich bringt. Ich wollte ein Logfile in einer ähnlichen
Form, wie es moderne Anwendungen wie cups, samba oder Apache machen. Das Datum
sollte mit Jahresangabe sein, Priorität, Facility und das Programm, was loggt,
sollten ebenfalls auftauchen. Eine Zeile sollte etwa so aussehen:
[2003/10/13 12:00:42] info mail fetchmail fetchmail[30924]: No mail for ...
|
Zuerst das Datum in einer samba-like Form, dann die Log-Priorität, die Facility
(also der Systembereich, der loggt), das Programm und die Message. Alle
erzeugten Logs des Systems, die über syslog laufen,
sollten in einer Logdatei landen. Hierzu fügte ich in der
syslog-ng.conf folgende Zeilen hinzu:
destination mysyslog {
file("/var/log/mysyslog"
owner("root")
group("adm")
perm(0640)
template( "[$YEAR/$MONTH/$DAY $HOUR:$MIN:$SEC] $PRIORITY
$FACILITY $PROGRAM $MESSAGE\n")); };
log { source(src); destination(mysyslog); };
|
Mit destination wird ein
destination-Objekt festgelegt, welches
mysyslog heißt und mit der Datei
/var/log/mysyslog verbunden wird. Das Ausgabe-Format
beschreibt ein Template. Über die Zeile log wird dann ein
zuvor definiertes source-Objekt und mein
destination-Objekt zu einer Log-Aktion zusammengefügt.
|