python logging模块的多文件应用

概述

有的时候需要在一个python程序中生成多个log文件。
本文对logging进一步封装,展示如何在一个程序中使用logging模块打印两个log文件来记录不同类型的信息。
注意logging模块是线程安全的,可以在多线程环境中使用。

完整的代码

[python]  view plain  copy
  1. #!/usr/bin/env python2.7  
  2. # -*- coding:utf-8 -*-  
  3. import logging, logging.handlers  
  4. class LogMgr:  
  5.     def __init__ (self, logpath, markpath):  
  6.         self.LOG = logging.getLogger('log')  
  7.         loghdlr1 = logging.handlers.RotatingFileHandler(logpath,"a"01)  
  8.         fmt1 = logging.Formatter("%(asctime)s %(threadName)-10s %(message)s""%Y-%m-%d %H:%M:%S")  
  9.         loghdlr1.setFormatter(fmt1)  
  10.         self.LOG.addHandler(loghdlr1)  
  11.         self.LOG.setLevel(logging.INFO)  
  12.   
  13.         self.MARK = logging.getLogger('mark')  
  14.         loghdlr2 = logging.handlers.RotatingFileHandler(markpath,"a"01)  
  15.         fmt2 = logging.Formatter("%(message)s")  
  16.         loghdlr2.setFormatter(fmt2)  
  17.         self.MARK.addHandler(loghdlr2)  
  18.         self.MARK.setLevel(logging.INFO)  
  19.     def error(self, msg):  
  20.         if self.LOG is not None:  
  21.             self.LOG.error(msg)  
  22.     def info(self, msg):  
  23.         if self.LOG is not None:  
  24.             self.LOG.info(msg)  
  25.     def debug(self, msg):  
  26.         if self.LOG is not None:  
  27.             self.LOG.debug(msg)  
  28.     def mark(self, msg):  
  29.         if self.MARK is not None:  
  30.             self.MARK.info(msg)  
  31. def main():  
  32.     global log_mgr  
  33.     log_mgr = LogMgr("mylog","mymark")    
  34.     log_mgr.error('[mylog]This is error log')      
  35.     log_mgr.info('[mylog]This is info log')      
  36.     log_mgr.debug('[mylog]This is debug log')      
  37.     log_mgr.mark('[mymark]This is mark log')   
  38.   
  39. if __name__ == "__main__":  
  40.     main()  

执行结果

猜你喜欢

转载自blog.csdn.net/weixin_40539892/article/details/80433086