我使用JSON日志记录,并希望使用UDP端口514的SysLogHandler。最终成功配置了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设施。