python多进程调试_python多进程写日志解决方案

在多进程Python项目中,直接写入同一个日志文件会导致日志丢失。本文介绍了两种解决方案:为每个进程分配不同日志文件,或者使用并发安全的日志处理器如`ConcurrentRotatingFileHandler`。然而,`ConcurrentRotatingFileHandler`在Windows上可能引起程序卡死,可以通过判断系统类型,使用`RotatingFileHandler`作为替代,或者安装`concurrent-log-handler`库来解决这个问题。
摘要由CSDN通过智能技术生成

通常,我们的日志是这样写的:

_code_log_file = os.path.join(BASE_DIR, 'logs', 'code.log')

_code_log_handler = TimedRotatingFileHandler(_code_log_file, when="D")

_code_log_formatter = logging.Formatter('%(levelname)s %(pathname)s->func:%(funcName)s line:%(lineno)d %(message)s %(asctime)s')

_code_log_handler.setFormatter(_code_log_formatter)# 此处设置logger名称,否则默认的会和tornado的logger相同而使得下方设置的错误等级被轻质更新为info

code_log = logging.getLogger('code-log')

code_log.setLevel(logging.INFO)

code_log.addHandler(_code_log_handler)

这样写,一般情况下不会有问题,即使程序中使用了多线程写日志也不会导致日志丢失。(logging是线程安全的)

但是,实际项目中,为了最大量的利用CPU,我们需要启动多个python进程,这个时候,这样写日志就会出问题了。当有多个进程同时写同一个日志文件时,就会出现覆盖而导致日志信息丢失的问题。

对于这样的问题,通常有两种方案:

一. 为每个进程分配不同的文件

原理:规避了多个进程写同一个文件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值