在Python中将Json Object字符串作为系统日志消息发送

问题描述

我正在使用this tool获取设备上的指标。

该脚本正在使用套接字发送syslog消息,而我正尝试使其使用本机syslog函数来发送消息。

添加了以下代码,但似乎无法正常工作。

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

即使使用测试脚本也失败。我不太精通python或编程,但是我可以参考一些经验,对正确方向的任何指针都表示赞赏。

解决方法

来自:https://stackoverflow.com/a/38929289/1033927

您可以使用远程syslog服务器:rsyslog或python包loggerglue实现rfc5424和rfc5425中描述的syslog协议。 。当您使用1024以上的端口时,可以非root用户身份运行它。

在python日志记录模块中,您有一个SyslogHandler,它也支持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')