Python 3.x 使用自定义应用程序名称写入rsyslog 我所拥有的

Python 3.x 使用自定义应用程序名称写入rsyslog 我所拥有的,python-3.x,centos7,Python 3.x,Centos7,我编写了一个Python类,它通过rsyslog将消息写入自定义日志。这是对my的扩展,我暂时通过在每条消息前加上我的应用程序名称来规避my,并将rsyslog配置为将包含我的应用程序名称的所有日志放在我的自定义日志中。但是,我担心系统上的其他内容会写入rsyslog,而该消息恰好包含我的应用程序的名称,rsyslog将检测到该消息并将该日志条目发送到我的日志。我也更喜欢应用程序名称的外观,而不是日志中出现的journal 附件是我的代码: import logging from logging

我编写了一个Python类,它通过rsyslog将消息写入自定义日志。这是对my的扩展,我暂时通过在每条消息前加上我的应用程序名称来规避my,并将rsyslog配置为将包含我的应用程序名称的所有日志放在我的自定义日志中。但是,我担心系统上的其他内容会写入rsyslog,而该消息恰好包含我的应用程序的名称,rsyslog将检测到该消息并将该日志条目发送到我的日志。我也更喜欢应用程序名称的外观,而不是日志中出现的journal

附件是我的代码:

import logging
from logging import handlers

lumberjack = logging.getLogger("MyAppName")
lumberjack.setLevel(logging.INFO)
handler = handlers.SysLogHandler(address='/dev/log')
handler.setFormatter(logging.Formatter('%(name)s %(levelname)s: %(message)s'))
handler.ident = "MyAppName"
lumberjack.addHandler(handler)
lumberjack.critical("I'm okay") 
目标 以下两条消息是示例。第一个是由我的Python类编写的。第二个是我在运行logger-tmyappname-s“嘿,伙计,我想你的应用程序名搞错了”

问题:
我必须在我的Python代码中更改哪些内容才能使这些行看起来相同,但包含levelname,正如我已经做的那样?

更改以下行

handler.setFormatter(logging.Formatter('%(name)s %(levelname)s: %(message)s'))
如下所示(基本上只需在
%(name)s
之后添加一个冒号):

然后删除以下行以避免应用程序名称重复:

handler.ident = "MyAppName"
现在它做到了:


9月10日06:52:33主机名MyAppName:CRITICAL:我很好

嗯,Python3.8.6这看起来像是MyAppName\uuuuu main\uuuuuuu:INFO消息…编辑:这是因为我有一个记录器名称和标识。我使用的是logging.getLogger(\uuu name\uuuuu)
handler.setFormatter(logging.Formatter('%(name)s: %(levelname)s: %(message)s'))
handler.ident = "MyAppName"