【发布时间】:2015-05-19 04:27:03
【问题描述】:
如果我使用 logger = logging.getLogger("Name") 创建一个记录器对象,我无法将文件模式从 append('a') 更改为 write ('w')。如果我将根记录器与 basicConfig 一起使用,我可以,但是当我想要的只是我自己的从 DEBUG 级别开始的消息时,我会记录很多系统调试消息。
我希望 (1) 将我自己的记录器对象的文件模式更改为“w” 或 (2) 向根记录器添加过滤器。甚至可以从根记录器中过滤掉这些调试消息吗?
def create_log():
# create logger for "Sample App"
logger = logging.getLogger('automated_testing')
logger.setLevel(logging.DEBUG)
# create file handler which logs even debug messages
fh = logging.FileHandler('results.log')
fh.setLevel(logging.DEBUG)
# create console handler with a higher log level
ch = logging.StreamHandler(stream=sys.stdout)
ch.setLevel(logging.DEBUG)
# create formatter and add it to the handlers
formatter = logging.Formatter('[%(asctime)s] %(levelname)8s --- %(message)s ' +
'(%(filename)s:%(lineno)s)',datefmt='%Y-%m-%d %H:%M:%S')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
# add the handlers to the logger
logger.addHandler(ch)
logger.addHandler(fh)
return logger
【问题讨论】:
-
要设置“自己的”
FileHandler的模式,您可以使用mode关键字参数FileHandler(filename, mode='w')- docs