Envio de string de objeto Json como mensagem syslog em Python

Oct 28 2020

Estou usando essa ferramenta para obter métricas sobre o aparelho.

O script está usando sockets para enviar mensagem syslog, e estou tentando fazer com que ele envie a mensagem usando funções syslog nativas.

Eu adicionei o código abaixo, mas não consigo fazer isso funcionar.

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

Mesmo o uso de scripts de teste está falhando. Não sou muito versado em python ou programação, mas posso me virar com alguma referência, quaisquer dicas na direção certa serão apreciadas.

Respostas

sarvesh.lad Dec 15 2020 at 21:57

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

Você pode usar um servidor syslog remoto: rsyslog ou o pacote python loggerglue implementa o protocolo syslog conforme descrito em rfc5424 e rfc5425. . Ao usar uma porta acima de 1024, você pode executá-lo como um usuário não root.

Dentro do módulo de registro python, você tem um SyslogHandler que também suporta o registro remoto 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')