首页 > 解决方案 > 在 Python 中将 Json 对象字符串作为系统日志消息发送

问题描述

我正在使用这个工具来获取设备上的指标。

该脚本使用套接字发送 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或编程,但我可以通过一些参考来获得,任何正确方向的指针都值得赞赏。

标签: pythonjsonsyslog

解决方案


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

您可以使用远程 syslog 服务器:rsyslog 或 python 包 loggerglue 实现 syslog 协议,如 rfc5424 和 rfc5425 中所述。. 当您使用 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')

推荐阅读