python实现的系统实用log类实例


Posted in Python onJune 30, 2015

本文实例讲述了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程序设计有所帮助。

Python 相关文章推荐
Python3.x版本中新的字符串格式化方法
Apr 24 Python
python自动zip压缩目录的方法
Jun 28 Python
使用Python对IP进行转换的一些操作技巧小结
Nov 09 Python
Python使用回溯法子集树模板解决迷宫问题示例
Sep 01 Python
用pandas按列合并两个文件的实例
Apr 12 Python
dataframe设置两个条件取值的实例
Apr 12 Python
Sanic框架应用部署方法详解
Jul 18 Python
Python文件常见操作实例分析【读写、遍历】
Dec 10 Python
Python爬取知乎图片代码实现解析
Sep 17 Python
python基于K-means聚类算法的图像分割
Oct 30 Python
Python使用urllib模块对URL网址中的中文编码与解码实例详解
Feb 18 Python
python 窃取摄像头照片的实现示例
Jan 08 Python
python实现在windows服务中新建进程的方法
Jun 30 #Python
python实现线程池的方法
Jun 30 #Python
python实现的简单FTP上传下载文件实例
Jun 30 #Python
编写Python CGI脚本的教程
Jun 29 #Python
Python访问纯真IP数据库脚本分享
Jun 29 #Python
Python实现把数字转换成中文
Jun 29 #Python
Python中if __name__ == '__main__'作用解析
Jun 29 #Python
You might like
MSN消息提示类
2006/09/05 Javascript
漂亮的提示信息(带箭头)
2007/03/21 Javascript
IE FF OPERA都可用的弹出层实现代码
2009/09/29 Javascript
两种简单实现菜单高亮显示的JS类代码
2010/06/27 Javascript
js中eval详解
2012/03/30 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器(优化篇)
2013/06/28 Javascript
页面按钮禁用与解除禁用的方法
2014/02/19 Javascript
js实现简单的购物车有图有代码
2014/05/26 Javascript
javascript在IE下trim函数无法使用的解决方法
2014/09/12 Javascript
百度地图自定义控件分享
2015/03/04 Javascript
JavaScript中扩展Array contains方法实例
2020/08/23 Javascript
jQuery 获取跨域XML(RSS)数据的相关总结分析
2016/05/18 Javascript
原生js实现class的添加和删除简单代码
2016/07/12 Javascript
两种JavaScript的AES加密方式(可与Java相互加解密)
2016/08/02 Javascript
使用Ajax生成的Excel文件并下载的实例
2016/11/21 Javascript
JS比较两个数值的大小实例
2016/11/25 Javascript
JavaScript创建对象的七种方式全面总结
2017/08/21 Javascript
vue利用v-for嵌套输出多层对象,分别输出到个表的方法
2018/09/07 Javascript
Vue3.0 响应式系统源码逐行分析讲解
2019/10/14 Javascript
[03:21]辉夜杯主赛事 12月25日TOP5
2015/12/26 DOTA
使用Python的Bottle框架写一个简单的服务接口的示例
2015/08/25 Python
关于Django显示时间你应该知道的一些问题
2017/12/25 Python
python实现textrank关键词提取
2018/06/22 Python
对Python 中矩阵或者数组相减的法则详解
2019/08/26 Python
Python中实现输入超时及如何通过变量获取变量名
2020/01/18 Python
浅谈Python爬虫原理与数据抓取
2020/07/21 Python
10分钟入门CSS3 Animation
2018/12/25 HTML / CSS
html5 datalist 选中option选项后的触发事件
2020/03/05 HTML / CSS
新西兰航空中国官网:Air New Zealand China
2018/07/24 全球购物
用C或者C++语言实现SOCKET通信
2015/02/24 面试题
大学本科毕业生求职简历的自我评价
2013/10/09 职场文书
大专毕业生简历的自我评价
2013/10/20 职场文书
电子商务专业个人的自我评价
2013/11/19 职场文书
酒店值班经理的工作职责范本
2014/02/18 职场文书
酒店开业庆典策划方案
2014/05/28 职场文书
2016寒假社会实践心得体会范文
2015/10/09 职场文书