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 相关文章推荐
Windows8下安装Python的BeautifulSoup
Jan 22 Python
使用Python的Zato发送AMQP消息的教程
Apr 16 Python
详解Django+uwsgi+Nginx上线最佳实战
Mar 14 Python
Python for循环与range函数的使用详解
Mar 23 Python
Python安装及Pycharm安装使用教程图解
Sep 20 Python
win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码
Jan 16 Python
使用PyTorch实现MNIST手写体识别代码
Jan 18 Python
django admin管理工具自定义时间区间筛选器DateRangeFilter介绍
May 19 Python
django前端页面下拉选择框默认值设置方式
Aug 09 Python
Python操作Word批量生成合同的实现示例
Aug 28 Python
tensorflow与numpy的版本兼容性问题的解决
Jan 08 Python
Python中的socket网络模块介绍
Jul 23 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目录管理函数小结
2008/09/10 PHP
php urlencode()与urldecode()函数字符编码原理详解
2011/12/06 PHP
PHP json_decode函数详细解析
2014/02/17 PHP
PHP扩展Memcache分布式部署方案
2015/12/06 PHP
简单实用的反馈表单无刷新提交带验证
2013/11/15 Javascript
Javascript中设置默认参数值示例
2014/09/11 Javascript
Javascript中arguments和arguments.callee的区别浅析
2015/04/24 Javascript
图解Sublime Text3使用技巧
2015/12/21 Javascript
Node.js重新刷新session过期时间的方法
2016/02/04 Javascript
json定义及jquery操作json的方法
2016/09/29 Javascript
ES6概念 Symbol toString()方法
2016/12/25 Javascript
Node.js调试技术总结分享
2017/03/12 Javascript
使用canvas及js简单生成验证码方法
2017/04/02 Javascript
大白话讲解JavaScript的Promise
2017/04/06 Javascript
Vuex简单入门
2017/04/19 Javascript
Angular.Js中过滤器filter与自定义过滤器filter实例详解
2017/05/08 Javascript
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
2017/10/23 Javascript
Angular 容器部署的方法
2018/04/17 Javascript
[01:11:21]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第三场 3月7日
2021/03/11 DOTA
浅析Python多线程下的变量问题
2015/04/28 Python
基于循环神经网络(RNN)实现影评情感分类
2018/03/26 Python
用Python识别人脸,人种等各种信息
2019/07/15 Python
python实现连连看游戏
2020/02/14 Python
Anaconda详细安装步骤图文教程
2020/11/12 Python
Django自带的用户验证系统实现
2020/12/18 Python
美国高级工作服品牌:Carhartt
2018/01/25 全球购物
高级销售员求职信
2013/10/25 职场文书
创建文明城市标语
2014/06/16 职场文书
乡镇综治宣传月活动总结
2014/07/02 职场文书
《改造我们的学习》心得体会
2014/11/07 职场文书
2014年效能监察工作总结
2014/11/21 职场文书
出纳年终工作总结2014
2014/12/05 职场文书
乡镇一岗双责责任书
2015/01/29 职场文书
员工家属慰问信
2015/03/24 职场文书
详细聊聊MySQL中慢SQL优化的方向
2021/08/30 MySQL
Python&Matlab实现灰狼优化算法的示例代码
2022/03/21 Python