【发布时间】:2022-01-19 10:08:49
【问题描述】:
我当前的格式字符串是:
formatter = logging.Formatter('%(asctime)s : %(message)s')
我想添加一个名为 app_name 的新字段,它在包含此格式化程序的每个脚本中都有不同的值。
import logging
formatter = logging.Formatter('%(asctime)s %(app_name)s : %(message)s')
syslog.setFormatter(formatter)
logger.addHandler(syslog)
但我不确定如何将 app_name 值传递给记录器以插入到格式字符串中。我显然可以通过每次传递它来让它出现在日志消息中,但这很混乱。
我试过了:
logging.info('Log message', app_name='myapp')
logging.info('Log message', {'app_name', 'myapp'})
logging.info('Log message', 'myapp')
但没有任何作用。
【问题讨论】:
-
你真的想把这个传递给每个
log电话吗?如果是这样,请查看 the docs,它说“此功能可用于将您自己的值注入 LogRecord……”但这似乎是使用logger = logging.getLogger('myapp')并将其烘焙到logger.info调用中的主要案例。 -
python 日志记录已经可以做到这一点。如果您在每个应用程序中使用不同的
logger对象,您可以通过实例化您的loggers 使每个对象使用不同的名称,如下所示:logger = logging.getLogger(myAppName)。请注意,__name__是 python 模块名称,所以如果每个应用程序都是它自己的 python 模块,那也可以。