Dienste Loggen, die nach stdout bzw. stderr ausgeben

Also ich persönlich würde es bevorzugen solche Dienste mit runit zu überwachen und gleich in svlogd zu loggen, weil ich das für die meisten Dienste so mache. Wenn du das Programm allerdings in einen "normalen Unixdaemon" verwandeln willst so ist daemon(8) dein Freund. Einige Ports (z.B. www/gatling) enthalten rc.d Scripts die dies bereits tun. Allerdings ist gatling da veraltet, weil es das Rad in /bin/sh neuerfindet (damals konnte daemon(8) noch nicht alles nötige).
 
Laut Doku (https://h2o.examp1e.net/configure/base_directives.html#error-log) kann dieser Webserver auch mittels Pipes loggen. Da liegt es nahe, dies mit dem Tool logger zu machen und somit ins Syslog. Die Logrotation dann ganz normal über newsyslog.
Mit Pipe und dem Hinweis auf rotatelog habe ich es ja dann auch hinbekommen.

Aber mir ist nicht klar, wie man das mit logger bzw. via das Syslog bewerkstelligen würde. Es klingt eigentlich "besser", weil es mit den Mitteln des Basissystems machbar ist (und nicht - wie im Falle von rotateloge - das gesamte Apache-Paket nach sich zieht).
 
Aber mir ist nicht klar, wie man das mit logger bzw. via das Syslog bewerkstelligen würde.

Beispiel:
Code:
$ echo "foo" | logger -t h2o -p local0.err
Schickt die Nachricht "foo" ins Syslog (tag h2o, facility local0, loglevel err).
Um das auch in einer Datei festzuhalten, musste dann die /etc/syslog.conf anpassen:

Code:
!h2o
*.err                                   /var/log/h2o-error.log
!-h20

Mit !<tagname> kann man die nachfolgenden Regeln auf dieses Tag beschränken, !-<tagname> hebt die Beschränkung wieder auf (richtig: negiert sie).
Alles mit loglevel err und dem Tag h2o geht dann in die Datei /var/log/h2o-error.log.

Nach dem Anpassen der Konfiguration muss die Datei angelegt werden und der Syslog-Dienst neu geladen werden:
Code:
# touch /var/log/h2o-error.log
# killall -HUP syslogd

Dann nochmal testen:
Code:
$ echo "bla" | logger -t h2o -p local0.err

Nun sollte bla in der Datei /var/log/h2o-error.log erscheinen.

Die Manpages dazu:
* logger(1)
* syslog.conf(5)

Alles kein Hexenwerk und sogar auf UNIX+Linux nutzbar. Warum die Leute in dem Thread da nicht drauf gekommen sind, wundert mich ein wenig ;-)

Rob
 
@KobRheTilla Vielen Dank!!! Das ist ja viel eleganter. Vor allem mit nur-Basis-System-Tools! Ich habe diesen Weg mal weitergegeben, wobei der Maintainer des FreeBSD-Ports von h2o den Hinweis auf Logger ebenfalls vor ein paar Tagen gegeben hatte. Aber erst aus Deinen Erklärungen ist mir klar geworden, wie ich das zusammenkleben muss, damit alles funktioniert!
 
Zurück
Oben