繁体   English   中英

Django / Python日志记录

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM