2016-08-11 3 views
2

Ich möchte bald einige Logging in einige Tests mit entweder (Linux) Kommandozeile oder Python einfügen. Ich möchte nichts Systemweites tun (z. B. syslogd neu konfigurieren).Schnelles Fernprotokollierungssystem?

ich vorher gemacht habe dies so etwas wie, indem Sie:

wget URL/logme im = module_name & msg = hello_world

Und dann Parsen nur die Server-Log-Datei?. Es ist ein wenig hackish und Sie müssen alle Ihre Daten URL-codieren. Sicherlich hat jemand jetzt einen besseren Weg.

Gibt es eine bessere Möglichkeit, schnell eine Remote-Protokollierung zu erhalten?

+0

Sind Sie nicht bereit, Anthony auf beiden Seiten systemweit zu ändern? Andernfalls können Sie ein rsyslog als Logger-Server und Python 'loggerglue' einrichten, um vom Client zum entfernten Host zu loggen. – rfkortekaas

+0

Ich wusste nicht über loggerglue, das könnte helfen. Ich möchte etwas, das ich ohne Root-Berechtigungen einrichten kann. Wenn ich ein Syslog auf einem nicht privilegierten Port ausführen kann, sollte das funktionieren. –

Antwort

3

Sie können einen Remote-Syslog-Server verwenden: rsyslog oder das Python-Paket loggerglue implementiert das Syslog-Protokoll wie in rfc5424 und rfc5425 beschrieben. . Wenn Sie einen Port über 1024 verwenden, können Sie ihn als Benutzer ohne Rootberechtigung ausführen.

Innerhalb des Python-Logging-Moduls haben Sie einen SyslogHandler, der auch die syslog-Fernprotokollierung unterstützt.

import logging 
import logging.handlers 

my_logger = logging.getLogger('MyLogger') 
my_logger.setLevel(logging.DEBUG) 

handler = logging.handlers.SysLogHandler(address = ('127.0.0.1',514)) 

my_logger.addHandler(handler) 

my_logger.debug('this is debug') 
my_logger.critical('this is critical') 
Verwandte Themen