Envío de cadena de objeto Json como mensaje syslog en Python

Oct 28 2020

Estoy usando esta herramienta para obtener métricas en el dispositivo.

El script está usando sockets para enviar un mensaje de syslog y estoy intentando que envíe el mensaje usando funciones nativas de syslog.

Agregué el siguiente código, pero parece que no puedo hacer que esto funcione.

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")

Incluso el uso de scripts de prueba está fallando. No estoy bien versado en Python o programación, pero puedo arreglármelas con alguna referencia, se agradecen los indicadores en la dirección correcta.

Respuestas

sarvesh.lad Dec 15 2020 at 21:57

Desde: https://stackoverflow.com/a/38929289/1033927

Puede usar un servidor syslog remoto: rsyslog o el paquete python loggerglue implementa el protocolo syslog como se describe en rfc5424 y rfc5425. . Cuando usa un puerto por encima de 1024, puede ejecutarlo como un usuario no root.

Dentro del módulo de registro de Python, tiene un SyslogHandler que también admite el registro remoto de 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')