使用多个日志文件,但只有一个实际工作

时间:2014-05-23 11:20:04

标签: python python-2.7 logging

我试图为我的应用程序使用两个日志文件(access_log& error_log)。 以下是我设置的方法:

# setup logging
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')

# access file logger
accesslog = logging.getLogger('simple_logger')
hdlr_1 = logging.FileHandler("C:\Users\xxx\code\log\access_log")
hdlr_1.setLevel(logging.INFO)
hdlr_1.setFormatter(formatter)
accesslog.addHandler(hdlr_1)

# error file logger
errorlog = logging.getLogger('simple_logger_2')
hdlr_2 = logging.FileHandler("C:\Users\xxx\code\log\access_log")    
hdlr_2.setFormatter(formatter)
errorlog.addHandler(hdlr_2)

# log access
accesslog.info('Process started') # this doesn't work
accesslog.error('Process started') # this works

当某个时候出现错误时,我使用以下命令记录:

errorlog.error("message") # this works

使用.error()记录的消息实际上保存在日志文件中,而不是用info()记录的消息。

我将.setLevel(logging.INFO)添加到a​​ccesslog处理程序但仍未成功...

1 个答案:

答案 0 :(得分:0)

找到解决方案:

hdlr_1.setLevel(logging.INFO)

变为

accesslog.setLevel(logging.INFO)

现在它有效。这很奇怪,因为根据python27 doc它说如果你没有设置日志记录级别,它将默认设置为NOTSET,意思是所有消息级别已处理,但似乎并非如此。