[英]Python logging: different logging destination per process
我剛剛開始使用Python日志記錄模塊,但我聽不懂。
我正在編寫一個以以下方式工作的腳本:
第一部分 (單個過程):它獲取一些數據進行計算(如何操作並不重要)。 在這里,我通過以下方式創建記錄器:
import logging
logging.basicConfig(format='%(asctime)-6s: %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger('Pipeline')
logger.setLevel(logging.INFO)
logger.warning('Pipeline started')
換句話說,我登錄到屏幕。
第二部分 (多處理):我創建了幾個過程(數據分析確實很耗時間和CPU消耗)來分析之前找到的數據。
現在,我希望每個進程僅登錄到不同的文件,而無需登錄到屏幕。
我寫的是:
fh = logging.FileHandler('/tmp/'+multiprocessing.current_process().name+'_worker.log')
fmt = logging.Formatter(%(asctime)-6s: %(name)s - %(levelname)s - %(message)s)
fh.setFormatter(fmt)
local_logger = logging.getLogger(multiprocessing.current_process().name+'_worker')
local_logger.addHandler(fh)
local_logger.warning(multiprocessing.current_process().name + ' (worker) Process started')
我得到的是每個進程都記錄到一個不同的文件,但也記錄到屏幕上!
我怎樣才能解決這個問題?
懷疑您的本地記錄器正在將其日志消息向上傳遞到頂層,並在此輸出到stdout。 嘗試關閉本地記錄器上的傳播。 我相信您可以這樣做:
local_logger.propagate = False
您可以按照Art Swri的方式進行,也可以省略basicConfig()
調用。 這就是向根記錄器添加控制台處理程序的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.