Chinaunix首页 | 论坛 | 博客
  • 博客访问: 251122
  • 博文数量: 45
  • 博客积分: 802
  • 博客等级: 军士长
  • 技术积分: 470
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-08 12:21
文章分类
文章存档

2014年(4)

2013年(4)

2012年(37)

我的朋友

分类: Python/Ruby

2013-06-11 22:38:02

原文地址:http://www.cnblogs.com/kill-signal/archive/2012/10/10/2718002.html


点击(此处)折叠或打开

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-

  3. '''
  4. 该日志类可以把不同级别的日志输出到不同的日志文件中
  5. '''

  6. import os
  7. import sys
  8. import time
  9. import logging
  10. import inspect

  11. handlers = {logging.NOTSET:"/tmp/TNLOG-notset.log",
  12.             logging.DEBUG:"/tmp/TNLOG-debug.log",
  13.             logging.INFO:"/tmp/TNLOG-info.log",
  14.             logging.WARNING:"/tmp/TNLOG-warning.log",
  15.             logging.ERROR:"/tmp/TNLOG-error.log",
  16.             logging.CRITICAL:"/tmp/TNLOG-critical.log"}

  17. def createHandlers():
  18.     logLevels = handlers.keys()
  19.     for level in logLevels:
  20.         path = os.path.abspath(handlers[level])
  21.         handlers[level] = logging.FileHandler(path)


  22. #加载模块时创建全局变量
  23. createHandlers()

  24. class TNLog(object):
  25.     def printfNow(self):
  26.         return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
  27.     
  28.     def __init__(self,level=logging.NOTSET):
  29.         self.__loggers = {}
  30.         logLevels = handlers.keys()
  31.         for level in logLevels:
  32.             logger = logging.getLogger(str(level))
  33.             #如果不指定level,获得的handler似乎是同一个handler?
  34.             logger.addHandler(handlers[level])
  35.             logger.setLevel(level)
  36.             self.__loggers.update({level:logger})

  37.     def getLogMessage(self,level,message):
  38.         frame,filename,lineNo,functionName,code,unknowField = inspect.stack()[2]
  39.         '''日志格式:[时间] [类型] [记录代码] 信息'''
  40.         return "[%s] [%s] [%s - %s - %s] %s" %(self.printfNow(),level,filename,lineNo,functionName,message)
  41.     
  42.     def info(self,message):
  43.         message = self.getLogMessage("info",message)
  44.         self.__loggers[logging.INFO].info(message)
  45.     
  46.     def error(self,message):
  47.         message = self.getLogMessage("error",message)
  48.         self.__loggers[logging.ERROR].error(message)
  49.     
  50.     def warning(self,message):
  51.         message = self.getLogMessage("warning",message)
  52.         self.__loggers[logging.WARNING].warning(message)

  53.     
  54.     def debug(self,message):
  55.         message = self.getLogMessage("debug",message)
  56.         self.__loggers[logging.DEBUG].debug(message)

  57.     
  58.     def critical(self,message):
  59.         message = self.getLogMessage("critical",message)
  60.         self.__loggers[logging.CRITICAL].critical(message)

  61. if __name__ == "__main__":
  62.     logger = TNLog()
  63.     logger.debug("debug")
  64.     logger = TNLog()
  65.     logger.info("info")
  66.     logger = TNLog()
  67.     logger.warning("warning")
  68.     logger = TNLog()
  69.     logger.error("error")
  70.     logger = TNLog()
  71.     logger.critical("critical")

阅读(3054) | 评论(2) | 转发(0) |
0

上一篇:diff命令的使用

下一篇:理解python logging

给主人留下些什么吧!~~