python logging模块 自定义输出

来源:互联网 发布:秒快软件 编辑:程序博客网 时间:2024/06/06 07:28
#!/usr/bin/env python  # coding:utf-8    """ FuncName: logger.py Desc: output log to console and file Date: 2016-06-21 10:30 Home: http://blog.csdn.net/z_johnny Author: johnny """    from logging.handlers import RotatingFileHandler  import logging  import threading  import ConfigParser    class MyLog:      def __init__(self, log_config):          """         init config and get value         """            self.logger = logging.getLogger('OutputLog')          config = ConfigParser.ConfigParser()          config.read(log_config)            mythread=threading.Lock()          mythread.acquire()                             # thread lock                self.log_file_path = config.get('LOGGING', 'log_file_path')          self.maxBytes = config.get('LOGGING', 'maxBytes')          self.backupCount = int(config.get('LOGGING', 'backupCount'))          self.outputConsole_level = int(config.get('LOGGING', 'outputConsole_level'))          self.outputFile_level = int(config.get('LOGGING', 'outputFile_level'))          self.outputConsole = int(config.get('LOGGING', 'outputConsole'))          self.outputFile = int(config.get('LOGGING', 'outputFile'))          self.formatter = logging.Formatter('%(asctime)s  - %(filename)s : %(levelname)s  %(message)s')            mythread.release()                            # thread lock relax        def outputLog(self):          """         output log to console and file         """          if self.outputConsole == 1 :              # if true ,it should output log in console              console_handler = logging.StreamHandler()              console_handler.setFormatter(self.formatter)              self.logger.setLevel(self.outputConsole_level)              self.logger.addHandler(console_handler)          else:              pass                    if self.outputFile == 1:              file_handler = RotatingFileHandler(self.log_file_path, maxBytes=self.maxBytes, backupCount=self.backupCount)              # define RotatingFileHandler, file output path, one file max byte, max backup number               file_handler.setFormatter(self.formatter)              self.logger.setLevel(self.outputFile_level)              self.logger.addHandler(file_handler)          else:              pass             return self.logger    mylog = MyLog('logConfig.ini')  logger = mylog.outputLog()  



配置文件   logConfig.ini

;说明 : 1兆字节(mb)=1024千字节(kb)  1千字节(kb)=1024字节(b)      ;说明 : 日志级别 : CRITICAL = 50 ERROR = 40 WARNING = 30 INFO = 20 DEBUG = 10 NOTSET = 0    ;maxBytes : 每个日志文件最大为多少字节,到达最大数后自动分割   例如:10M = 10*1024*1024       ;backupCount : 最多备份日志文件的数量    ;outputConsole_level : 输出到控制台的日志信息等级,如为10,则只输出DEBUG及以上的信息    ;outputFile_level : 输出到文件的日志信息等级    ;log_file_path : 输出文件目录,支持绝对路径与相对路径 如 D:\Python\log.log 或 ./result/logging.log    ;outputConsole = 1 开启控制台日志输出,0则关闭,outputFile = 1 开启文件日志输出, 0则关闭    [LOGGING]  maxBytes = 10*1024*1024  backupCount = 10  outputConsole_level = 10  outputFile_level = 20  log_file_path = ./logging.log  outputConsole = 1  outputFile = 1  


logging模块了解:

logging介绍


python logging 日志输出 学习笔记 


python logging 替代print 输出内容到控制台和重定向到文件




0 0
原创粉丝点击