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 相关文章推荐
Python两个整数相除得到浮点数值的方法
Mar 18 Python
Python中endswith()函数的基本使用
Apr 07 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
Jan 04 Python
详解Python函数式编程—高阶函数
Mar 29 Python
python抓取搜狗微信公众号文章
Apr 01 Python
Python爬虫实现验证码登录代码实例
May 10 Python
python绘制评估优化算法性能的测试函数
Jun 25 Python
Flask框架单例模式实现方法详解
Jul 31 Python
opencv中图像叠加/图像融合/按位操作的实现
Apr 01 Python
jupyter 导入csv文件方式
Apr 21 Python
Pandas之read_csv()读取文件跳过报错行的解决
Apr 21 Python
python tkinter实现连连看游戏
Nov 16 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
如何在Web页面上直接打开、编辑、创建Office文档
2007/03/12 Javascript
JavaScript 编写匿名函数的几种方法
2010/02/21 Javascript
跨浏览器的 mouseenter mouseleave 以及 compareDocumentPosition的使用说明
2010/05/04 Javascript
当jQuery遭遇CoffeeScript的时候 使用分享
2011/09/17 Javascript
Underscore.js 的模板功能介绍与应用
2012/12/24 Javascript
JS自调用匿名函数具体实现
2014/02/11 Javascript
Js与Jq 获取页面元素值的方法和差异对比
2015/04/30 Javascript
基于JavaScript实现购物网站商品放大镜效果
2016/09/06 Javascript
关于jquery form表单序列化的注意事项详解
2017/08/01 jQuery
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
2017/09/21 Javascript
swiper动态改变滑动内容的实现方法
2018/01/17 Javascript
浅谈js中的bind
2019/03/18 Javascript
JS实现马赛克图片效果完整示例
2019/04/13 Javascript
vue实现给div绑定keyup的enter事件
2020/07/31 Javascript
[01:30]2016国际邀请赛中国区预选赛神秘商店火爆开启
2016/06/26 DOTA
详解在Python程序中自定义异常的方法
2015/10/16 Python
使用Python读取二进制文件的实例讲解
2018/07/09 Python
Python3的介绍、安装和命令行的认识(推荐)
2018/10/20 Python
windows下 兼容Python2和Python3的解决方法
2018/12/05 Python
python利用跳板机ssh远程连接redis的方法
2019/02/19 Python
教你如何编写、保存与运行Python程序的方法
2019/07/12 Python
pandas 如何分割字符的实现方法
2019/07/29 Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
2020/03/06 Python
CSS3中使用RGBa来调节透明度的教程
2016/05/09 HTML / CSS
New Balance波兰官方商城:始于1906年,百年慢跑品牌
2017/08/15 全球购物
新媒传信软件测试面试题
2013/02/24 面试题
企业门卫岗位职责
2013/12/12 职场文书
函授毕业生自我鉴定范文
2014/03/25 职场文书
家具公司总经理岗位职责
2014/07/08 职场文书
教师党员批评与自我批评发言稿
2014/10/15 职场文书
公务员年度考核登记表个人总结
2015/02/12 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
2015年乡镇科普工作总结
2015/05/13 职场文书
小学教学工作总结2015
2015/05/13 职场文书
python基础入门之普通操作与函数(三)
2021/06/13 Python
Python requests用法和django后台处理详解
2022/03/19 Python