Senden der Json-Objektzeichenfolge als Syslog-Nachricht in Python
Ich verwende dieses Tool , um Metriken für die Appliance abzurufen.
Das Skript verwendet Sockets zum Senden von Syslog-Nachrichten, und ich versuche, die Nachricht mithilfe nativer Syslog-Funktionen zu senden.
Ich habe den folgenden Code hinzugefügt, aber ich kann nicht scheinen, dass dies funktioniert.
def sendSyslog2(jsonObj):
if (logHostAvailable["syslog"]==True):
logging.info("SYSLOG REQUEST: "+json.dumps(jsonObj))
try:
syslog.openlog(facility=syslog.LOG_LOCAL5)
syslog.syslog(syslog.LOG_INFO, json.dumps(jsonObj))
except:
logging.error("syslog failed")
Selbst die Verwendung von Testskripten schlägt fehl. Ich bin nicht gut mit Python oder Programmierung vertraut, aber ich kann mit einigen Referenzen auskommen, alle Hinweise in die richtige Richtung werden geschätzt.
Antworten
Von: https://stackoverflow.com/a/38929289/1033927
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 Nicht-Root-Benutzer ausführen.
Innerhalb des Python-Protokollierungsmoduls haben Sie einen SyslogHandler, der auch die Syslog-Remote-Protokollierung 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')