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

Posted

技术标签:

【中文标题】在 Python 中将 Json 对象字符串作为系统日志消息发送【英文标题】:Sending Json Object string as syslog message in Python 【发布时间】:2020-10-27 20:58:07 【问题描述】:

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

脚本正在使用套接字发送系统日志消息,我正试图让它使用本机系统日志函数发送消息。

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

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或编程,但我可以通过一些参考得到,任何正确方向的指针表示赞赏。

【问题讨论】:

我最终使用了这里推荐的 logging.handlers:***.com/questions/38907637/… 【参考方案1】:

发件人:https://***.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')

【讨论】:

以上是关于在 Python 中将 Json 对象字符串作为系统日志消息发送的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中将字符串数据转换为JSON对象?

如何在Nodejs中将字符串作为读取流对象传递?

在Javascript中将JSON字符串转换为JSON对象数组

如何在 MySQL/MariaDB 中将 LONGTEXT 字段作为 JSON 返回

在 ASP.net Core 中将对象转换为 Json

在 Postman 中将类对象作为参数传递