我使用 JSON 日志记录并希望将 SysLogHandler 与 UDP 端口 514 一起使用。最终让 JSON 处理程序配置工作。在处理程序部分,我有:
{
"syslog": {
"class": "logging.handlers.SysLogHandler",
"address": ["127.0.0.1", 514],
"facility": "local6",
"formatter": "syslog_fmt"
}
在其他任何地方都没有找到这个。
[编辑]
为了更清楚地了解这里发生的事情:这仅适用于 python 代码,并使用 python 内置的日志记录模块。该模块允许配置日志消息的格式和目的地。配置日志格式和目标的一种方法是使用用于配置日志记录的 JSON 文件。
上面的示例允许我将日志消息发送到 syslog 守护进程。
下面包含此类文件的完整示例。
{
"version": 1,
"disable_existing_loggers": "False",
"formatters": {
"verbose": {
"format": "%(asctime)s:%(levelname)s:%(process)d:%(filename)s:%(funcName)s:L%(lineno)d:%(message)s"
},
"syslog": {
"format": "%(levelname)s:%(process)d:%(filename)s:%(funcName)s:L%(lineno)d:%(message)s"
}
},
"handlers": {
"console": {
"class":"logging.StreamHandler",
"formatter": "standard"
},
"syslog": {
"class": "logging.handlers.SysLogHandler",
"address": ["127.0.0.1", 514],
"facility": "local6",
"formatter": "syslog_fmt"
}
},
"loggers": {
"": {
"handlers": ["console","syslog"],
"level": "DEBUG",
"propagate": "True"
}
}
}
上面的示例将 python 日志消息发送到 syslog 和控制台。目的地的消息格式不同(syslog 已在每条消息前加上时间戳)。对于 syslog 目标,日志使用设施 LOCAL6。