我试图为我的应用程序使用两个日志文件(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)
添加到accesslog处理程序但仍未成功...
答案 0 :(得分:0)
找到解决方案:
hdlr_1.setLevel(logging.INFO)
变为
accesslog.setLevel(logging.INFO)
现在它有效。这很奇怪,因为根据python27 doc它说如果你没有设置日志记录级别,它将默认设置为NOTSET
,意思是所有消息级别已处理,但似乎并非如此。