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 输出内容到控制台和重定向到文件
相关文章推荐
- python logging模块如何把不同内容定向到不同的输出
- python logging模块 自定义输出
- 在Module中使用自定义过滤器,来统一对站内所有请求响应的输出内容进行采集或更改。
- 自定义的日期的格式化输出
- 自定义的向客户端输出Javascript脚本alert函数
- log4j输出多个自定义日志文件
- 如何:创建自定义 HTTP 模块
- 分模块配置文件多个logger,每个模块有自己单独的输出位源,彼此不影响
- 编写自定义 HTTP 模块
- VB 几个模块常用的自定义变量和函数
- 自定义MembershipProvider来利用Asp.net 2.0 Login控件的登陆和修改密码模块
- 当中有介绍如何在DNN中添加自定义模块的方法
- 自定义调试信息的输出
- 如何使自定义模块加入DNN搜索引擎(转)
- 实践:创建自定义 HTTP 模块
- 自定义Appender ,实现输出log4j日志到GUI
- 如何建一个32位的数字用会编写个输出模块?
- 一个自定义的console输出类(test)
- 读书片断之 开发自定义HTTP模块
- ASP.NET基础教程-Web 自定义控件的使用-在页面上根据控件自定义属性的值在页面上连续输出文本