Skip to main content
 首页 » 编程设计

Python 日志记录 : different logging destination per process

2025年05月04日20xing901022

我刚开始使用 Python 日志记录模块,有些东西看不懂。

我正在编写一个按以下方式工作的脚本:

第 1 部分(单进程):它获取一些数据进行计算(如何计算并不重要)。 在这里,我通过以下方式创建一个记录器:

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') 

我得到的是每个进程都记录到不同的文件,但同时也记录到屏幕!

我该如何解决这个问题?

请您参考如下方法:

怀疑您的本地记录器将其日志消息向上传递到顶层,在那里它将输出到标准输出。尝试关闭本地记录器上的传播。我相信你可以这样做:

local_logger.propagate = False