实现日志类
来源:互联网 发布:应用程序界面设计软件 编辑:程序博客网 时间:2024/06/14 16:43
日志对于一个程序系统来说十分重要,很多时候定位问题都要通过日志去发现并定位问题。
一般有两种日志,debug日志和error日志,一般放在根目录的/data
debug日志会打印debug和error信息,而error日志只会打印error信息。
下面是我利用logging模块实现的一个日志类,可以用于复用。
class VLogger: def __init__(self, logDir, name): self.logDir = logDir self.debugFileName = '%s/%s_debug.log' % (logDir, name) self.errorFileName = '%s/%s_error.log' % (logDir, name) self.logger = logging.getLogger(name) self.formatter = logging.Formatter('%(asctime)s %(filename)s[line:%(lineno)d] [%(levelname)s] %(message)s', '%Y-%m-%d %H:%M:%S') self.logger.setLevel(logging.DEBUG) if not os.path.isdir(logDir): os.mkdir(logDir) self.debugInit(self.debugFileName) self.errorInit(self.errorFileName) def debugInit(self, fileName): debug = logging.FileHandler(fileName) debug.setLevel(logging.DEBUG) debug.setFormatter(self.formatter) self.logger.addHandler(debug) def errorInit(self, fileName): error = logging.FileHandler(fileName) error.setLevel(logging.ERROR) error.setFormatter(self.formatter) self.logger.addHandler(error)
注意,日志的一个很重要又不得不面对的一个问题,就是随着日志增多,怎么去删除旧日志,或者说怎么防止日志无限增长是一个值得关注的点,可以利用如下方法:
maxBytes和backupCount由自己决定就好,我的建议是debug日志可以设置这种循环打印日志,而错误日志不设置,错误日志必须全部记录下来,等处理完后可以手动删除一些很老的错误日志(最好不)。
handler = logging.handlers.RotatingFileHandler(log_name, maxBytes = 20, backupCount = 5)
于是,新的日志类如下:
# -*-coding:utf8-*-import loggingimport logging.handlersimport osclass VLogger: def __init__(self, logDir, name): self.logDir = logDir self.debugFileName = '%s/%s_debug.log' % (logDir, name) self.errorFileName = '%s/%s_error.log' % (logDir, name) self.logger = logging.getLogger(name) self.formatter = logging.Formatter('%(asctime)s %(filename)s[line:%(lineno)d] [%(levelname)s] %(message)s', '%Y-%m-%d %H:%M:%S') self.logger.setLevel(logging.DEBUG) if not os.path.isdir(logDir): os.mkdir(logDir) self.debugInit(self.debugFileName) self.errorInit(self.errorFileName) def debugInit(self, fileName): debug = logging.handlers.RotatingFileHandler(fileName, maxBytes = 20, backupCount = 5) #debug = logging.FileHandler(fileName) debug.setLevel(logging.DEBUG) debug.setFormatter(self.formatter) self.logger.addHandler(debug) def errorInit(self, fileName): #error = logging.FileHandler(fileName) error = logging.handlers.RotatingFileHandler(fileName, maxBytes = 20, backupCount = 5) error.setLevel(logging.ERROR) error.setFormatter(self.formatter) self.logger.addHandler(error)if __name__ == '__main__': MDlog = VLogger('.', 'mylogtest').logger MDlog.debug("这是debug消息1") MDlog.debug("这是debug消息2") MDlog.debug("这是debug消息3") MDlog.debug("这是debug消息4") MDlog.error("这是error消息1") MDlog.error("这是error消息2") MDlog.error("这是error消息3") MDlog.error("这是error消息4")
0 0
- 日志类的实现
- 实现日志类
- c++日志类实现
- C++实现简单日志类
- 支持多线程的日志记录类实现
- 基于Java8的日志类实现
- Peercast的日志实现
- 日志DLL实现
- hibernate语句日志实现
- 日志操作实现思路
- Golang实现Llog日志
- c++实现 日志记录
- 日志薄java实现
- windows日志实现
- C++日志模块实现
- log4j 实现日志管理
- 中国象棋实现 --- 记录日志
- C#实现日志
- Linux安装openoffice和swftools
- 我的2016
- Android 手势解锁详解(包括一次解锁、二次设置密码)
- Axis2 webService的的准备工作
- 深入理解javascript原型和闭包(15)——闭包
- 实现日志类
- 微信浏览器手机调试神器TBS Studio
- error C2059: syntax error : 'constant'
- ndk-build脚本
- 用git命令行打tag(标签)五步完成
- 安鑫 高颜值的男神、女神
- 利用Qt的qCompress和qUncompress来压缩和解压文件
- SpringMVC整合hessian
- 关联源码时,jar包中文乱码解决方法