一个.py脚本利用logging同时输出两个log文件

问题描述

一个.py脚本利用logging同时输出两个log文件,
通过两个不同的配置文件,可以生成两个log文件,
但是只有后一个log对象可以写进内容,前一个log对象无法写入内容

问题出现的环境背景及自己尝试过哪些方法

不知道什么原因,怀疑跟handlers类型有关?

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)
test.py
#!/usr/bin/env python
# coding: utf-8
import logging.config
import logging
def get_logger(logger_name, logger_path):

logging.config.fileConfig(logger_path)
return logging.getLogger(logger_name)

if name == '__main__':

log_path1='logging.conf'
log_path2='audit.conf'

logger1 = get_logger('Glon', log_path1)
logger2 = get_logger('GlonHo', log_path2)

logger1.info(' test1 log msg: %s', "111111111111111111111")
logger2.info(' test2 log msg: %s', "222222222222222222222")

logging.conf
[loggers]
keys=root

[handlers]
keys=rotatingHandler

[formatters]
keys=simpleFormatter

[logger_root]
level=INFO
handlers=rotatingHandler

[handler_rotatingHandler]
class=logging.handlers.TimedRotatingFileHandler
level=INFO
formatter=simpleFormatter
args=('trace.log', 'midnight')

[formatter_simpleFormatter]
format=%(asctime)s %(levelname)s %(message)s
datefmt=

audit.conf
[loggers]
keys=root

[handlers]
keys=rotatingHandler

[formatters]
keys=simpleFormatter

[logger_root]
level=INFO
handlers=rotatingHandler

[handler_rotatingHandler]
class=logging.handlers.TimedRotatingFileHandler
level=INFO
formatter=simpleFormatter
args=('wacaudit_console0.csv', 'midnight')

[formatter_simpleFormatter]
format=%(message)s

你期待的结果是什么?实际看到的错误信息又是什么?

题目描述

期望:log信息同时写入trace.log、wacaudit_console0.csv这两个log文件
实际:这两个log文件可同时生成,可log信息只写进wacaudit_console0.csv,却没有写进trace.log
结果:
cat trace.log
cat wacaudit_console0.csv
test2 log msg: 222222222222222222222

问题出现的环境背景及自己尝试过哪些方法

将test.py当中的
logger1 = get_logger('Glon', log_path1)
logger2 = get_logger('GlonHo', log_path2)
这两句代码互换位置,log信息可以写进trace.log,wacaudit_console0.csv也就没有值写进去了。

阅读 8.4k
2 个回答

要实现一个脚本文件输出两个log的话,建议将上面的logging.conf跟audit.conf整合成一个配置文件

配置那里改一下 加个变量 disable_existing_loggers

logging.config.fileConfig(logger_path,  disable_existing_loggers=False))

文档 https://docs.python.org/2/lib...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题