Python-在多进程中使用logger对象

Python-多进程中使用logger对象

多进程中使用logger对象,为了记录进程执行时的相关信息,肯定要在进程片段中创建logger对象。

示例代码如下:

#!/usr/bin/bash
# -*-coding: utf-8

import logging
import os
from multiprocessing import Pool, cpu_count


def parallel_run(count):
    logger = logging.getLogger("test")
    logger.setLevel(logging.DEBUG)
    fmt = logging.Formatter("%(name)s %(levelname)s %(asctime)s %(message)s")
    console = logging.StreamHandler()
    console.setLevel(logging.INFO)
    console.setFormatter(fmt)

    file_handler = logging.FileHandler('log_path_{}.log'.format(count))
    file_handler.setLevel(logging.DEBUG)
    file_handler.setFormatter(fmt)

    logger.addHandler(file_handler)
    logger.addHandler(console)
    logger.debug("PID[%s]: Hello world! task: %d" % (os.getpid(), count))
    logger.info("PID[%s]: Hello world! task: %d " % (os.getpid(), count))


if __name__ == &
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python Web 项目多进程写日志需要考虑多个进程同时写入同一个文件的问题。为了避免不同进程之间的写入操作互相干扰,可以使用 Python 标准库的 `logging` 模块,并将日志输出到不同的文件。 下面是一个示例代码: ```python import logging import multiprocessing import os def process_task(): # 设置日志输出格式 log_format = '%(asctime)s %(levelname)s %(processName)s %(message)s' logging.basicConfig(level=logging.INFO, format=log_format) # 获取当前进程 ID process_id = os.getpid() # 创建一个 FileHandler 对象,并指定日志输出文件 file_handler = logging.FileHandler(f'log_{process_id}.txt') file_handler.setLevel(logging.INFO) file_handler.setFormatter(logging.Formatter(log_format)) # 将 FileHandler 添加到 logger 对象 logger = logging.getLogger() logger.addHandler(file_handler) # 写入日志信息 logger.info('This is a log message from process %d.', process_id) if __name__ == '__main__': # 创建多个进程 processes = [] for i in range(5): p = multiprocessing.Process(target=process_task) processes.append(p) p.start() # 等待所有进程完成 for p in processes: p.join() ``` 在上面的代码,我们首先定义了一个 `process_task` 函数,该函数会在每个进程被调用。在 `process_task` 函数,我们首先设置了日志输出的格式,然后获取当前进程 ID,创建了一个 `FileHandler` 对象,并将其添加到 `logger` 对象。最后,我们使用 `logger` 对象写入了一条日志信息。 在 `__main__` 函数,我们创建了 5 个进程,并等待所有进程完成。在每个进程,都会执行 `process_task` 函数,并将日志输出到不同的文件。 这样,我们就可以在多进程Python Web 项目,实现日志的并发写入了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值