簡體   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