[英]How to always write log message to file regardless of level setting
我目前使用日志記錄模塊在腳本中實現了安靜模式,如下所示:
quiet = False # set quiet using cmdline arguments
logging.basicConfig(level=logging.WARNING if quiet else logging.INFO)
logger = logging.getLogger('logger')
my_file_handler = logging.FileHandler('file_name')
logger.addHandler(self.file)
使用上面的代碼,我得到了想要篩選的輸出,以及以非安靜模式提交的文件,例如:
logger.debug('want to show every time in file, but never to console')
logger.info('always in file, but only show in console if not quiet')
logger.warning('Show in both file and console, EVERY TIME')
但是,如果打開安靜模式,則屏幕和文件都不會得到任何輸出。 我希望日志文件中的所有內容都不管它是否安靜,但僅在非安靜模式下才打印到屏幕上(基本上,無論記錄級別如何,始終寫入文件,而是根據記錄級別打印)。
請告訴我該怎么做。
編輯:
我針對每個級別的差異對所需行為做了更清晰的帖子。 在this和this提供的答案中,設置FileHandler級別對我來說似乎無濟於事,因為我一直想將調試級別信息寫入文件。
quiet = False # set quiet using cmdline arguments
logging.basicConfig(level=logging.WARNING if quiet else logging.INFO)
logger = logging.getLogger('logger')
my_file_handler = logging.FileHandler('file_name')
my_file_handler.setLevel(logging.DEBUG) # added setLevel
logger.addHandler(self.file)
logger.debug('abcde') # this doesn't show in file or console as my basicConfig
# is logging.INFO
# But i WANT it to
您僅需要在處理程序上進行級別控制,而無需在記錄器上進行級別控制。 所以:
INFO
)。 StreamHandler
)級別設置為quiet
指示的級別。 FileHandler
上設置一個級別,這樣它將處理記錄器傳遞的所有消息。 您不能basicConfig()
使用basicConfig()
(它僅在根記錄器上設置級別,而不在處理程序上設置級別)-使用dictConfig()
或使用API調用( addHandler
, setLevel
等)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.