python logging模块 自定义输出

#!/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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值