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抢过年的火车票附源码
Dec 07 Python
Python pyinotify模块实现对文档的实时监控功能方法
Oct 13 Python
Django使用模板后无法找到静态资源文件问题解决
Jul 19 Python
python Elasticsearch索引建立和数据的上传详解
Aug 04 Python
python tkinter图形界面代码统计工具
Sep 18 Python
python 正则表达式贪婪模式与非贪婪模式原理、用法实例分析
Oct 14 Python
python 定义类时,实现内部方法的互相调用
Dec 25 Python
Python如何把字典写入到CSV文件的方法示例
Aug 23 Python
pytorch简介
Nov 11 Python
PyCharm Ctrl+Shift+F 失灵的简单有效解决操作
Jan 15 Python
PyQt5 QThread倒计时功能的实现代码
Apr 02 Python
python​格式化字符串
Apr 20 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
PHP动态图像的创建
2006/10/09 PHP
图书管理程序(一)
2006/10/09 PHP
由php的call_user_func传reference引发的思考
2010/07/23 PHP
遍历指定目录下的所有目录和文件的php代码
2011/11/27 PHP
Zend Framework入门教程之Zend_Session会话操作详解
2016/12/08 PHP
PHP基于GD2函数库实现验证码功能示例
2019/01/27 PHP
JQuery开发的数独游戏代码
2010/10/29 Javascript
jQuery jcrop插件截图使用方法
2013/11/20 Javascript
jquery高级编程的最佳实践详解
2014/03/23 Javascript
JavaScript不刷新实现浏览器的前进后退功能
2014/11/05 Javascript
使用node.js 获取客户端信息代码分享
2014/11/26 Javascript
js实现的简洁网页滑动tab菜单效果代码
2015/08/24 Javascript
基于JQuery实现图片上传预览与删除操作
2016/05/24 Javascript
原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
2016/07/22 Javascript
ES6中数组array新增方法实例总结
2017/11/07 Javascript
JS实现去除数组中重复json的方法示例
2017/12/21 Javascript
jquery动态添加以及遍历option并获取特定样式名称的option方法
2018/01/29 jQuery
vue单页应用加百度统计代码(亲测有效)
2018/01/31 Javascript
webpack打包并将文件加载到指定的位置方法
2018/02/22 Javascript
详解vue填坑之解决部分浏览器不支持pushState方法
2018/07/12 Javascript
微信小程序swiper使用网络图片不显示问题解决
2019/12/13 Javascript
有关vue 开发钉钉 H5 微应用 dd.ready() 不执行问题及快速解决方案
2020/05/09 Javascript
python和shell变量互相传递的几种方法
2013/11/20 Python
Python3基础之基本运算符概述
2014/08/13 Python
Python3.x中自定义比较函数
2015/04/24 Python
Pycharm编辑器技巧之自动导入模块详解
2017/07/18 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
2019/08/20 Python
python创建学生管理系统
2019/11/22 Python
Python中remove漏删和索引越界问题的解决
2020/03/18 Python
python 实现socket服务端并发的四种方式
2020/12/14 Python
HTML5实现视频直播功能思路详解
2017/11/16 HTML / CSS
Html5 canvas画图白板踩坑
2020/06/01 HTML / CSS
中专生学习生活的自我评价分享
2013/10/27 职场文书
职工运动会邀请函
2014/01/19 职场文书
部门活动策划方案
2014/08/16 职场文书
团支部组织委员竞选稿
2015/11/21 职场文书