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 输出内容到控制台和重定向到文件


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值