[英]django/python logging
我在django / python中使用的日志记录工具有一个很奇怪的问题。 自从我升级到django 1.3后,日志记录不再起作用。 它似乎与日志记录级别和settings.py文件中的'debug ='设置有关。
1)当我记录INFO消息并且debug = False时,将不会发生记录,我的文件也不会被追加。 2)当我记录警告消息并且debug = False时,日志记录的工作方式与我想要的完全一样,文件将被追加3)当我记录信息消息并且debug = True时,日志记录似乎可以工作,文件将被追加。
我怎么用debug = False记录INFO消息? 它在django 1.3之前就可以工作了……在某个神秘的地方有这个技巧吗? 下面有一个示例代码:
views.py:
import logging
logging.basicConfig(level=logging.INFO,
format='%(asctime)s %(levelname)s %(message)s',
filename='/opt/general.log',
filemode='a')
def create_log_file(filename, log_name, level=logging.INFO):
handler = logging.handlers.TimedRotatingFileHandler(filename, 'midnight', 7, backupCount=10)
handler.setLevel(level)
formatter = logging.Formatter('%(asctime)s %(name)-12s %(levelname)-8s %(message)s', '%a, %Y-%m-%d %H:%M:%S')
handler.setFormatter(formatter)
logging.getLogger(log_name).addHandler(handler)
create_log_file('/opt/test.log', 'testlog')
logger_test = logging.getLogger('testlog')
logger_test.info('testing the logging functionality')
使用此代码,在settings.py文件中将debug设置为False的情况下,日志记录在Django 1.3中不起作用。 当我应该这样做时:
logger_test.warning('testing the logging functionality')
当debug设置为False时,这将完美工作。 级别DEBUG和INFO不会进行日志记录,但是WARNING,ERROR和CRITICAL正在发挥作用...
有人有主意吗?
由于Django 1.3包含自己的日志记录配置,因此您需要确保所做的任何操作都不会与之冲突。 例如,如果在首次导入模块时根记录器已经由Django配置了处理程序,则basicConfig()
调用将无效。
您所描述的是正常的日志记录情况-警告和以上内容得到处理,而INFO和DEBUG默认情况下被抑制。 看起来您的basicConfig()
无效。 您应该考虑更换你的basicConfig()与相应的日志记录配置调用settings.py
,或者至少调查根本日志记录级别,哪些处理程序连接到它,在你的时间basicConfig()
调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.