我有這樣一段代碼來設置我的記錄器在Python:日誌記錄級別隨機變化,而不是總是寫入文件
#Configure logging
logging.basicConfig(format = '%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
datefmt='%m-%d %H:%M',
filename= "log.txt",
level = logging.getLevelName('DEBUG'))
print(logging.getLogger().getEffectiveLevel())
但是從打印語句的輸出有時是這樣的:
30
等次是這樣的(這是正確的):
10
但往往即使日誌記錄級別爲設置爲正確的數字,它不記錄任何文件,但其他時間它的工作。我需要做些什麼來確保我的日誌記錄級別設置正確?
*編輯:下面是我的解決方案,基於@randomir的建議。 **編輯:我必須進行第二次更改,我在調用logging.basicConfig()
之後設置關卡,否則記錄級別仍然沒有一致地調用。 `logging.getLogger()。setLevel(...)行現在似乎工作。
我創建了一個新類:Logger.py。
import logging
class Logger(object):
def __init__(self):
logging.basicConfig(format = '%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
datefmt='%m-%d %H:%M',
filename= "log.txt")
logging.getLogger().setLevel(logging.getLevelName("DEBUG"))
print(logging.getLogger().getEffectiveLevel())
而且現在不是在我的啓動類直接配置基本配置我實例化記錄器類一次:
from Logger import Logger
import logging
class LaunchPython(object):
#Configure Logging
Logger()
logging.info("Application has started")
在調用我只是把import logging
頂部的記錄器的所有後續類然後做logging.info(...)
或logging.debug(....)
。無需導入Logger.py類並重新實例化它。
你有更多的上下文嗎?如果我簡單地複製/粘貼代碼示例並運行它,我可靠地獲得10. –
您是否在使用相同的記錄器?是否聲明過一次,然後導入到所有模塊中? – PRMoureu
@Finch_Powers通常它會在第一次從新的QT控制檯運行應用程序時輸出正確的調試編號,但是如果隨後運行它,則會開始大部分輸出30. – EliSquared