2017-03-24 3 views
1

ich eine Anwendung schreibe, die sowohl auf STDOUT und syslog mit dem logging-Modul und ein logging.StreamHandler() und logging.handlers.SysLogHandler(address='/dev/log') Handler jeweils protokolliert.logging.handlers.SysLogHandler auslässt in Lognachricht führende Leerzeichen

Der Formatierer wird als

handler.setFormatter(logging.Formatter('%(message)s')) 

in beiden Fällen.

Es scheint nun, dass Leerzeichen führen (was ich bestimmte Protokollnachrichten für eine verbesserte Lesbarkeit einrücken verwenden) in STDOUT gezeigt ist, aber nicht in syslog. Gibt es eine Möglichkeit für die SysLogHandler den Whitespace zu erhalten, wie der StreamHandler scheint zu tun?

Antwort

1

syslog-Daemons ändern die Daten, die an sie gesendet werden, bevor sie angezeigt werden. Zum Beispiel haben die Daten, die tatsächlich an den Syslog-Daemon gesendet werden, eine Kopfzeile, wie sie von RFC 5424 verlangt wird, die Sie nicht in dem Protokoll sehen, das Sie in einem Log-Viewer sehen. Die Formatierung der Nachricht unter SysLogHandler garantiert also keine absolut getreue Darstellung (zumindest wenn es um führende Leerzeichen geht).

Verwandte Themen