视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
python实现的系统实用log类实例
2020-11-27 14:34:14 责编:小采
文档


本文实例讲述了python实现的系统实用log类。分享给大家供大家参考。具体如下:

每个系统都必不可少会需要一个log类,方便了解系统的运行状况和排错,python本身已经提供了一个logger了,很强大,只要稍微封装一下就可以放到自己的系统了,下面是我自己的log类

文件名:logger.py

"""This module takes care of the logging
logger helps in creating a logging system for the application 
Logging is initialised by function LoggerInit.
"""
import logging
import os
import sys
class 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

希望本文所述对大家的Python程序设计有所帮助。

下载本文
显示全文
专题