Envoi d'une chaîne d'objet Json en tant que message syslog en Python
J'utilise cet outil pour obtenir des métriques sur l'appliance.
Le script utilise des sockets pour envoyer un message syslog, et j'essaie de le faire envoyer le message à l'aide des fonctions syslog natives.
J'ai ajouté le code ci-dessous mais je n'arrive pas à le faire fonctionner.
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")
Même l'utilisation de scripts de test échoue. Je ne connais pas bien le python ou la programmation, mais je peux me débrouiller avec quelques références, tous les pointeurs dans la bonne direction appréciés.
Réponses
De: https://stackoverflow.com/a/38929289/1033927
Vous pouvez utiliser un serveur syslog distant: rsyslog ou le package python loggerglue implémente le protocole syslog comme décrit dans rfc5424 et rfc5425. . Lorsque vous utilisez un port supérieur à 1024, vous pouvez l'exécuter en tant qu'utilisateur non root.
Dans le module de journalisation python, vous avez un SyslogHandler qui prend également en charge la journalisation à distance syslog.
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')