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中的os.path路径模块中的操作方法总结
Jul 07 Python
使用python语言,比较两个字符串是否相同的实例
Jun 29 Python
python字符串切割:str.split()与re.split()的对比分析
Jul 16 Python
python线程的几种创建方式详解
Aug 29 Python
python 实现视频 图像帧提取
Dec 10 Python
python实现字典嵌套列表取值
Dec 16 Python
python支持多线程的爬虫实例
Dec 21 Python
基于Python爬取爱奇艺资源过程解析
Mar 02 Python
python解析xml文件方式(解析、更新、写入)
Mar 05 Python
解决paramiko执行命令超时的问题
Apr 16 Python
python中pow函数用法及功能说明
Dec 04 Python
Python中zipfile压缩包模块的使用
May 14 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
支持oicq头像的留言簿(二)
2006/10/09 PHP
php.ini中date.timezone设置分析
2011/07/29 PHP
PHP has encountered a Stack overflow问题解决方法
2014/11/03 PHP
PHP简单实现断点续传下载的方法
2015/09/25 PHP
PHP+JS实现的实时搜索提示功能
2018/03/13 PHP
laravel添加前台跳转成功页面示例
2019/10/22 PHP
一些常用的Javascript函数
2006/12/22 Javascript
原创javascript小游戏实现代码
2010/08/19 Javascript
Web前端设计模式  制作漂亮的弹出层
2010/10/29 Javascript
jquery索引在使用中的一些困惑
2013/10/24 Javascript
学习javascript的闭包,原型,和匿名函数之旅
2015/10/18 Javascript
jQuery点击按钮弹出遮罩层且内容居中特效
2015/12/14 Javascript
jQuery实现简单的图片查看器
2020/09/11 Javascript
json数据处理及数据绑定
2017/01/25 Javascript
JS实现面向对象继承的5种方式分析
2018/07/21 Javascript
JS监听事件的叠加和移除功能
2018/11/19 Javascript
DWR内存兼容及无法调用问题解决方案
2020/10/16 Javascript
在Python中使用mongoengine操作MongoDB教程
2015/04/24 Python
使用Python保存网页上的图片或者保存页面为截图
2016/03/05 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
2018/04/23 Python
django中模板的html自动转意方法
2018/05/27 Python
Python批量生成特定尺寸图片及图画任意文字的实例
2019/01/30 Python
python实现删除列表中某个元素的3种方法
2020/01/15 Python
python numpy--数组的组合和分割实例
2020/02/24 Python
django有哪些好处和优点
2020/09/01 Python
巧用HTML5给按钮背景设计不同的动画简单实例
2016/08/09 HTML / CSS
巴西Bo.Bô官方在线商店:经营奢侈品时尚业务
2020/03/16 全球购物
运动会广播稿400字
2014/01/25 职场文书
模具数控专业自荐信
2014/01/27 职场文书
《尊严》教学反思
2014/02/11 职场文书
服装采购员岗位职责
2014/03/15 职场文书
酒店工程部主管岗位职责
2015/04/16 职场文书
被告答辩状范文
2015/05/22 职场文书
大国崛起观后感
2015/06/02 职场文书
安全生产学习心得体会
2016/01/18 职场文书
《传颂之物 虚伪的假面》BD发售宣传CM公开
2022/04/04 日漫