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()
分享到:
相关推荐
当在多进程中使用`logging`时,需要注意的是,虽然`logging`模块在单个进程中是线程安全的,但并不保证在多进程环境下的安全性。因为不同进程之间无法通过标准方式同步对共享文件的访问。为了解决这个问题,可以采取...
为了解决这个问题,我们可以利用多线程和队列来实现异步日志记录,从而确保日志输出不会阻塞主程序的执行。 在提供的代码中,创建了一个名为`logging2`的类,该类继承自`threading.Thread`,目的是实现异步日志记录...
在Python程序中使用logging模块可以帮助开发者跟踪程序运行状态,诊断错误,以及在多线程或多进程环境中进行有效的日志管理。 首先,我们来看一下logging模块的基本用法。在示例代码中,首先导入了logging和sys模块...
在这个项目中,`log.py`文件包含了日志模块,它可能使用了Python的`logging`库。通过设置不同级别的日志(如DEBUG、INFO、WARNING、ERROR),开发者可以追踪程序运行过程中的问题,记录重要事件,或者在无错误发生时...
这个资源对于学习Python多线程编程和视频处理非常有用,不仅可以了解多线程的基本使用,还能实践文件下载和媒体处理的实际应用。通过阅读源码和教程,你可以深入理解如何在Python中实现高效的文件下载和处理。
4. 如果需要在多线程或多进程环境中使用日志,确保正确地同步日志操作。 通过以上封装,我们可以轻松地在Python项目中实现日志功能,提高代码的可维护性和调试效率。结合实际需求,你可以进一步扩展这个封装,比如...
为了更好地管理日志文件,Python `logging`模块提供了一个`TimedRotatingFileHandler`类,它可以根据设定的时间间隔自动创建新的日志文件,并将旧的日志文件进行重命名或者归档,从而实现日志文件的自动分割。...
### Python中使用logging和traceback模块记录日志和跟踪异常 #### 一、Logging模块详解 **logging** 模块是Python内置的标准库之一,它主要用于记录程序运行过程中的各种日志信息,以便于开发者更好地追踪和分析...
`Python-lvsoft-enhancedlogging`是一个针对Python原生`logging`模块的增强版本,旨在提供更丰富的功能和更友好的使用体验。这个库由lvsoft开发,旨在满足复杂日志需求,提升开发效率。 `enhanced_logging`模块在...
总的来说,解决Python `logging`模块中日志轮转文件不删除的问题,需要从以下几个方面入手:检查配置、验证权限、处理多线程或多进程的情况以及确认是否使用了最新的Python版本。如果问题依然无法解决,可以考虑...
2. **多处理器兼容性**:可能包含了对多进程或多线程环境下的日志记录优化,确保日志数据的一致性和完整性。 3. **更高级的过滤机制**:可能提供了更复杂的过滤规则,允许根据日志级别、模块、函数或其他条件进行...
要创建一个直接将日志写入文件的系统,我们可以使用Python的内置`logging`模块。这个模块提供了丰富的功能,包括设置日志级别、定义日志格式、配置日志处理器等。以下是一个基本的使用示例: ```python import ...
1. **线程安全的日志库**:许多流行的日志库,如Java的`java.util.logging.Logger`、Python的`logging`模块和C++的`log4cpp`,都提供了线程安全的接口。这些库在内部处理了并发写入的问题,允许开发者无须担心线程...
本文将详细介绍Python logging日志模块,并且探讨在多进程环境下使用logging进行日志记录的方法以及如何安全地切分日志文件。 首先,我们来看一下logging模块的四个基本组成部分: 1. Loggers:程序可以直接调用的...
通过`logging.FileHandler('test.log')`创建一个FileHandler实例,它会在当前目录下创建一个名为'test.log'的日志文件,并将日志消息写入到这个文件中。接着,通过`fh.setLevel(logging.DEBUG)`设置FileHandler的...
这个封装实例提供了基本的日志记录需求,但如果需要更复杂的日志管理,如日志滚动、多进程/线程日志同步、异步日志处理等,可能需要进一步扩展或使用第三方库如`logging.handlers`模块中的`RotatingFileHandler`或`...
4. **创建日志对象**:使用`LOG = logging.getLogger(__name__)`创建一个日志对象。 5. **记录日志**:通过`LOG.info('This is an info message')`等方式记录不同级别的日志信息。 6. **自定义日志处理**:oslo....
- **统一日志输出路径:**将多个日志的`FileHandler`指向同一个日志文件,但在多线程或多进程环境中需注意避免文件访问冲突。 - **设置Parent Logger:**通过设置子Logger的`parent`属性,可以轻松地将不同来源的...
在多进程或多线程的应用程序中,如何有效地管理日志文件成为了一个挑战。由于Python的`logging`模块本身是线程安全的,但在多进程环境下,多个进程同时向同一个日志文件写入可能会导致数据混乱或丢失。 针对这个...
在实际开发中,很多编程语言都有成熟的日志库,例如Java的Log4j,Python的logging,它们提供了丰富的功能和易于使用的API,可以快速构建起满足需求的时间记录logger类。 总结来说,"多线程时间记录logger类"是一个...