python - 在 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或编程,但我可以通过一些参考来获得,任何正确方向的指针都值得赞赏。
解决方案
来自: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')
推荐阅读
- python - 使用 rcParams 更改网格线样式的源代码在哪里?
- javascript - 有没有什么好的方法可以删除对应的选择表格?
- python - 为什么 Python 不支持数字常量?
- python - Windows 10 x64 上的 Weasyprint 'cairo' 错误
- javascript - 通过对象搜索后响应组件的更新状态
- python - TensorFlow concat ValueError
- javascript - 等到在 Firebase 数据库(网络)中检测到新数据
- bash - 意外令牌“完成”bash脚本附近的语法错误将数据从csv添加到mysql
- angularjs - 导航到另一个页面时如何定位元素(部分)
- neo4j - 在两个节点之间创建关系后不更改记录