python实现的系统实用log类
来源:互联网 发布:湖南云计算 编辑:程序博客网 时间:2024/06/01 10:16
每个系统都必不可少会需要一个log类,方便了解系统的运行状况和排错,python本身已经提供了一个logger了,很强大,只要稍微封装一下就可以放到自己的系统了,下面是我自己的log类
文件名:logger.py
"""This module takes care of the logginglogger helps in creating a logging system for the application Logging is initialised by function LoggerInit."""import loggingimport osimport sysclass logger(object): """Class provides methods to perform logging.""" m_logger = None def __init__(self, opts, logfile): """Set the default logging path.""" self.opts = opts self.myname = 'dxscs' self.logdir = '.' self.logfile = logfile self.filename = os.path.join(self.logdir, self.logfile) def loginit(self): """Calls function LoggerInit to start initialising the logging system.""" logdir = os.path.normpath(os.path.expanduser(self.logdir)) self.logfilename = os.path.normpath(os.path.expanduser(self.filename)) if not os.path.isdir(logdir): try: os.mkdir(logdir) except OSError, e: msg = ('(%s)'%e) print msg sys.exit(1) self.logger_init(self.myname) def logger_init(self, loggername): """Initialise the logging system. This includes logging to console and a file. By default, console prints messages of level WARN and above and file prints level INFO and above. In DEBUG mode (-D command line option) prints messages of level DEBUG and above to both console and file. Args: loggername: String - Name of the application printed along with the log message. """ fileformat = '[%(asctime)s] %(name)s: [%(filename)s: %(lineno)d]: %(levelname)-8s: %(message)s' logger.m_logger = logging.getLogger(loggername) logger.m_logger.setLevel(logging.INFO) self.console = logging.StreamHandler() self.console.setLevel(logging.CRITICAL) consformat = logging.Formatter(fileformat) self.console.setFormatter(consformat) self.filelog = logging.FileHandler(filename=self.logfilename, mode='w+') self.filelog.setLevel(logging.INFO) self.filelog.setFormatter(consformat) logger.m_logger.addHandler(self.filelog) logger.m_logger.addHandler(self.console) if self.opts['debug'] == True: self.console.setLevel(logging.DEBUG) self.filelog.setLevel(logging.DEBUG) logger.m_logger.setLevel(logging.DEBUG) if not self.opts['nofork']: self.console.setLevel(logging.WARN) def logstop(self): """Shutdown logging process.""" logging.shutdown()#test if __name__ == '__main__': #debug mode & not in daemon opts = {'debug':True,'nofork':True} log = logger(opts, 'dxscs_source.log') log.loginit() log.m_logger.info('hello,world')
执行结果:
终端和文件中都显示有:[2012-09-06 16:56:01,498] dxscs: [logger.py: 88]: INFO : hello,world
如果只需要显示在文件中可以将debug和nofork选项都置为false
转载请注明出处:http://blog.csdn.net/liujian0616/article/details/7951490
- python实现的系统实用log类
- 简单log系统的实现
- 一个简单实用的log类
- 一种简便实用的自定义LOG实现(iOS)
- 实用的git log用法
- python实现log日志
- 打造史上最简单,最实用的Log工具类
- Python log的说明
- python 的log功能
- python的log使.
- 造实用个性的Log输出宏
- Android的Log系统
- 实现一个基于xml的log类
- ceph log的实现
- 实用的Log打印类封装,助尼快速定位源码(android)
- android 简单实用的Log打印类封装,助你快速定位问题
- android 简单实用的Log打印类封装,助你快速定位问题
- 实用的Log打印类封装,助尼快速定位源码(android)
- 黑马程序员——Properties类简单应用,试用次数限制
- Spring.NET学习笔记5——容器中对象的作用域(基础篇) Level 200
- PSOM
- GDAL代码调试
- mysql日志
- python实现的系统实用log类
- Android P2P语音通话实现(思路探讨)
- I2C Verilog的实现(一)
- CANOpen学习指南
- JDBC 基础知识 (一)
- jQuery版本的图片剪切插件
- C++中的virtual “虚”
- C与C++函数指针
- 在存储过程中,用xml作为参数传递