簡體   English   中英

Python日志記錄:每個進程的日志記錄目的地不同

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM