`

python 使用logging多线程写多个log文件

阅读更多
import threading

import time

import logging

import logging.handlers



LEVELS={'notset':logging.DEBUG,

        'debug':logging.DEBUG,

        'info':logging.INFO,

        'warning':logging.WARNING,

        'error':logging.ERROR,

        'critical':logging.CRITICAL}



LOG_FILENAME = 'test.log'

LOG_BACKUPCOUNT = 5

LOG_LEVEL = 'notset'



def InitLog(file_name,logger):

    LOG_FILENAME = file_name

    

    handler = logging.handlers.RotatingFileHandler(LOG_FILENAME,maxBytes=10*1024*1024,backupCount=LOG_BACKUPCOUNT)

    #handler = logging.FileHandler(LOG_FILENAME)

    formatter = logging.Formatter("[ %(asctime)s ][ %(levelname)s ] %(message)s\n")

    handler.setFormatter(formatter)    

    #logger = logging.getLogger()

    logger.addHandler(handler)

    logger.setLevel(LEVELS.get(LOG_LEVEL.lower()))

    return logger

                

class t1(threading.Thread):

    def __init__(self,threadName):

        threading.Thread.__init__(self,name = threadName)



        logger1 = logging.getLogger("thread.a")

        self.logger = InitLog("thread1.log",logger1)

        

    def run(self):

        global i

        self.logger.info("test1")

        while True:

            print '*************hello t1*****************'

            self.logger.info("******hello t1******")

            self.logger.debug("t1 debug")

            self.logger.warning("t1 warning")

            self.logger.error("t1 error")

            i += 1

            print i

            if i> 10:

                break

            time.sleep(3)

        self.logger.info("test1 over")



class t2(threading.Thread):

    def __init__(self,threadName):



        threading.Thread.__init__(self,name = threadName)



        logger2 = logging.getLogger("thread.b")

        self.logger = InitLog("thread2.log",logger2)

        

        print "self.logger = %s" %self.logger

        None

    def run(self):

        global i

        self.logger.info("test2")

        while True:

            print 'hello t2'

            self.logger.info("hello t2")

            self.logger.debug("t2 debug")

            self.logger.warning("t2 warning")

            self.logger.error("t2 error")

            i += 1

            print i

            if i > 10:

                break

            time.sleep(5)

        self.logger.info("test2.over")

i = 0



p1 = t1('p1')

p1.start()

p2 = t2('p2')

p2.start()

分享到:
评论

相关推荐

    详解Python中logging日志模块在多进程环境下的使用

    当在多进程中使用`logging`时,需要注意的是,虽然`logging`模块在单个进程中是线程安全的,但并不保证在多进程环境下的安全性。因为不同进程之间无法通过标准方式同步对共享文件的访问。为了解决这个问题,可以采取...

    Python logging模块异步线程写日志实现过程解析

    为了解决这个问题,我们可以利用多线程和队列来实现异步日志记录,从而确保日志输出不会阻塞主程序的执行。 在提供的代码中,创建了一个名为`logging2`的类,该类继承自`threading.Thread`,目的是实现异步日志记录...

    logging python

    在Python程序中使用logging模块可以帮助开发者跟踪程序运行状态,诊断错误,以及在多线程或多进程环境中进行有效的日志管理。 首先,我们来看一下logging模块的基本用法。在示例代码中,首先导入了logging和sys模块...

    Python爬虫支持命令行处理、多线程、日志、配置文件的读取

    在这个项目中,`log.py`文件包含了日志模块,它可能使用了Python的`logging`库。通过设置不同级别的日志(如DEBUG、INFO、WARNING、ERROR),开发者可以追踪程序运行过程中的问题,记录重要事件,或者在无错误发生时...

    python多线程下载ts文件并合并mp4

    这个资源对于学习Python多线程编程和视频处理非常有用,不仅可以了解多线程的基本使用,还能实践文件下载和媒体处理的实际应用。通过阅读源码和教程,你可以深入理解如何在Python中实现高效的文件下载和处理。

    python中Log封装,可直接使用

    4. 如果需要在多线程或多进程环境中使用日志,确保正确地同步日志操作。 通过以上封装,我们可以轻松地在Python项目中实现日志功能,提高代码的可维护性和调试效率。结合实际需求,你可以进一步扩展这个封装,比如...

    Python中logging日志记录到文件及自动分割的操作代码

    为了更好地管理日志文件,Python `logging`模块提供了一个`TimedRotatingFileHandler`类,它可以根据设定的时间间隔自动创建新的日志文件,并将旧的日志文件进行重命名或者归档,从而实现日志文件的自动分割。...

    Python中使用logging和traceback模块记录日志和跟踪异常

    ### Python中使用logging和traceback模块记录日志和跟踪异常 #### 一、Logging模块详解 **logging** 模块是Python内置的标准库之一,它主要用于记录程序运行过程中的各种日志信息,以便于开发者更好地追踪和分析...

    Python-lvsoftenhancedlogging一个增强版的python日志模块

    `Python-lvsoft-enhancedlogging`是一个针对Python原生`logging`模块的增强版本,旨在提供更丰富的功能和更友好的使用体验。这个库由lvsoft开发,旨在满足复杂日志需求,提升开发效率。 `enhanced_logging`模块在...

    python logging 日志轮转文件不删除问题的解决方法

    总的来说,解决Python `logging`模块中日志轮转文件不删除的问题,需要从以下几个方面入手:检查配置、验证权限、处理多线程或多进程的情况以及确认是否使用了最新的Python版本。如果问题依然无法解决,可以考虑...

    Python库 | logging-config-1.0.3.tar.gz

    2. **多处理器兼容性**:可能包含了对多进程或多线程环境下的日志记录优化,确保日志数据的一致性和完整性。 3. **更高级的过滤机制**:可能提供了更复杂的过滤规则,允许根据日志级别、模块、函数或其他条件进行...

    log打印代码,直接打印log到文件中。非常灵活好用

    要创建一个直接将日志写入文件的系统,我们可以使用Python的内置`logging`模块。这个模块提供了丰富的功能,包括设置日志级别、定义日志格式、配置日志处理器等。以下是一个基本的使用示例: ```python import ...

    多线程的日志记录.rar

    1. **线程安全的日志库**:许多流行的日志库,如Java的`java.util.logging.Logger`、Python的`logging`模块和C++的`log4cpp`,都提供了线程安全的接口。这些库在内部处理了并发写入的问题,允许开发者无须担心线程...

    python logging日志模块以及多进程日志详解

    本文将详细介绍Python logging日志模块,并且探讨在多进程环境下使用logging进行日志记录的方法以及如何安全地切分日志文件。 首先,我们来看一下logging模块的四个基本组成部分: 1. Loggers:程序可以直接调用的...

    python 通过logging写入日志到文件和控制台的实例

    通过`logging.FileHandler('test.log')`创建一个FileHandler实例,它会在当前目录下创建一个名为'test.log'的日志文件,并将日志消息写入到这个文件中。接着,通过`fh.setLevel(logging.DEBUG)`设置FileHandler的...

    python3 logging日志封装实例

    这个封装实例提供了基本的日志记录需求,但如果需要更复杂的日志管理,如日志滚动、多进程/线程日志同步、异步日志处理等,可能需要进一步扩展或使用第三方库如`logging.handlers`模块中的`RotatingFileHandler`或`...

    Python库 | oslo.log-3.15.0.tar.gz

    4. **创建日志对象**:使用`LOG = logging.getLogger(__name__)`创建一个日志对象。 5. **记录日志**:通过`LOG.info('This is an info message')`等方式记录不同级别的日志信息。 6. **自定义日志处理**:oslo....

    Python中logging实例讲解

    - **统一日志输出路径:**将多个日志的`FileHandler`指向同一个日志文件,但在多线程或多进程环境中需注意避免文件访问冲突。 - **设置Parent Logger:**通过设置子Logger的`parent`属性,可以轻松地将不同来源的...

    python中日志logging模块的性能及多进程详解

    在多进程或多线程的应用程序中,如何有效地管理日志文件成为了一个挑战。由于Python的`logging`模块本身是线程安全的,但在多进程环境下,多个进程同时向同一个日志文件写入可能会导致数据混乱或丢失。 针对这个...

    多线程时间记录logger类

    在实际开发中,很多编程语言都有成熟的日志库,例如Java的Log4j,Python的logging,它们提供了丰富的功能和易于使用的API,可以快速构建起满足需求的时间记录logger类。 总结来说,"多线程时间记录logger类"是一个...

Global site tag (gtag.js) - Google Analytics