我当前的格式字符串是:
formatter=logging.formatter('%(asctime)s:%(message)s')
我想添加一个名为app\u name的新字段,它在包含此格式化程序的每个脚本中都有不同的值
导入日志记录
格式化程序=日志记录。格式化程序(’%(asctime)s%(应用程序名称)s:%(消息)s’)
syslog.setFormatter(格式化程序)
logger.addHandler(syslog)
但我不知道如何将app\u name值传递给记录器,以插入格式字符串。通过每次传递它,我显然可以让它出现在日志消息中,但这很混乱
我试过:
logging.info('Log message',app\u name='myapp')
logging.info('Log message',{'app_name','myapp'})
logging.info('日志消息','我的应用')
但都不管用
您可以使用LoggerAdapter,这样就不必在每次日志调用中传递额外的信息:
导入日志记录
额外={‘app_name’:’Super app’}
logger=logging.getLogger(_名称__)
syslog=logging.StreamHandler()
格式化程序=日志记录。格式化程序(’%(asctime)s%(应用程序名称)s:%(消息)s’)
syslog.setFormatter(格式化程序)
logger.setLevel(logging.INFO)
logger.addHandler(syslog)
logger=logging.LoggerAdapter(记录器,额外)
logger.info(’天空是如此的蓝’)
日志(类似于)
2013-07-09 17:39:33596超级应用:天空是如此的蓝
过滤器也可用于添加上下文信息
导入日志记录
类AppFilter(logging.Filter):
def过滤器(自我,记录):
record.app_name=’Super app’
返回真值
logger=logging.getLogger(_名称__)
logger.addFilter(AppFilter())
syslog=logging.StreamHandler()
格式化程序=日志记录。格式化程序(’%(asctime)s%(应用程序名称)s:%(消息)s’)
syslog.setFormatter(格式化程序)
logger.setLevel(logging.INFO)
logger.addHandler(syslog)
logger.info(’天空是如此的蓝’)
生成类似的日志记录