多进程环境python logging打印日志混乱问题

多进程环境python logging打印日志混乱问题,第1张

解决办法如下:

多么痛的领悟,困扰了这么久的问题其实就是一个参数配置错了。

fileMode:表示日志文件的打开方式。w-直接写,使用这个配置当系统重启的时候日志会清空,一个进程打开后其他进程是无法使用的;a-尾部追加,大山让侍家都可以打滑腔开往文件结尾进行追加写入。

本人主语言是java,转到python后日志这块踩了几个坑。再说说另外一个坑,就是异常堆栈的打印问题,在java中logger是可以使用error直逗吵接打印出来的。在python中error跟其他日志记录方法没太大差别,是无法打印异常堆栈的,打印堆栈请使用 logger.exception("异常说明", e) 。

import logging

logging.basicConfig()

logging.getLogger('芹渗apscheduler').setLevel(logging.DEBUG)

def my_listener(event):

if event.exception:

print('散首衡The job crashed :(')

else:

print('The job worked :)'冲做)

scheduler.add_listener(my_listener, EVENT_JOB_EXECUTED | EVENT_JOB_ERROR)

loggin模块需要进行很多封装才好用,你这种陵核带情况应该是初始化有问题,给你贴一段代码你自己照抄下来用用试试。

# -*- coding:UTF8 -*-

#

import os

import logging

class Logger(object):

    '''

    @summary:日志处理对象,对logging的封装

    '''

    def __init__(self,name = 'Logger'):

        self.logger = logging.getLogger( name )

     氏简   self.init_logger()

    def init_logger(self):

        self.logger.setLevel(logging.DEBUG)

        # 屏幕输出日志

        stream = logging.StreamHandler()

        stream.setLevel( logging.INFO )

        # 日志样式

        fm_stream = logging.Formatter("[\033[1%(colorcode)sm%(levelname)s\033[0m   %(asctime)s   %(myfn)s:%(mylno)d:%(myfunc)s%(mymodule)s]   %(message)s", "%m-%d %H:%M:%S")

        stream.setFormatter( fm_stream )

        self.logger.addHandler( stream )

    def update_kwargs(self, kwargs, colorcode):

        try:

            fn, lno, func = self.logger.findCaller()

            fn = os.path.basename(fn)

        except Exception as ddd:

            fn, lno, func = "(unknown file)", 0, "(unknown function)"

        if not "extra" in kwargs:

            kwargs["extra"] = {}

        kwargs["extra"]["myfn"] = fn

        kwargs["extra"]["mylno"] = lno

        kwargs["extra"]["myfunc"] = func

        kwargs["extra"]["colorcode"] = colorcode

        kwargs["extra"]["mymodule"] = ""

    def debug(self, msg, *args, **kwargs):

        self.update_kwargs(kwargs, "0")    # 原色

        self.logger.debug(msg, *args, **kwargs)

    def info(self, msg, *args, **kwargs):

        self.update_kwargs(kwargs, "32")   # 绿色

        self.logger.info(msg, *args, **kwargs)

    def warning(self, msg, *args, **kwargs):

    尺芦    self.update_kwargs(kwargs, "33")   # 黄色

        self.logger.warning(msg, *args, **kwargs)

    def error(self, msg, *args, **kwargs):

        self.update_kwargs(kwargs, "31")   # 红色

        self.logger.error(msg, *args, **kwargs)

    def critical(self, msg, *args, **kwargs):

        self.update_kwargs(kwargs, "31")   # 红色

        self.logger.critical(msg, *args, **kwargs)

使用方法:

from logger import Logger

Logger().info('xxxxx')

Logger().warning('xxxxx')

Logger().error('xxxxx')


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12547935.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存