您的位置:首页 > 编程语言 > Python开发

python logging模块 自定义输出

2016-12-30 14:16 363 查看
#!/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 输出内容到控制台和重定向到文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: