Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5102270
  • 博文数量: 921
  • 博客积分: 16037
  • 博客等级: 上将
  • 技术积分: 8469
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-05 02:08
文章分类

全部博文(921)

文章存档

2020年(1)

2019年(3)

2018年(3)

2017年(6)

2016年(47)

2015年(72)

2014年(25)

2013年(72)

2012年(125)

2011年(182)

2010年(42)

2009年(14)

2008年(85)

2007年(89)

2006年(155)

分类: Python/Ruby

2015-10-11 09:55:27

首先你需要写一个log观察者类,然后给这观察者一个级别来过滤你想要的log 


  1. import logging
  2. from twisted.python import log

  3. class LevelFileLogObserver(log.FileLogObserver):

  4. def __init__(self, f, level=logging.INFO):
  5.     log.FileLogObserver.__init__(self, f)
  6.     self.logLevel = level

  7. def emit(self, eventDict):
  8.     if eventDict['isError']:
  9.         level = logging.ERROR
  10.     elif 'level' in eventDict:
  11.         level = eventDict['level']
  12.     else:
  13.         level = logging.INFO
  14.     if level >= self.logLevel:
  15.         log.FileLogObserver.emit(self, eventDict)
  16. '''then you have to register it:'''
  17. from twisted.python import logfile

  18. f = logfile.LogFile(“someFile.log”, '/some/path/', rotateLength=1000,maxRotatedFiles=100)
  19. logger = LevelFileLogObserver(f, logging.DEBUG)
  20. twisted.python.log.addObserver(logger.emit)
If you use twistd you can pass it through –logger option:

mylogger.py

  1. import LevelFileLogObserver
  2. from twisted.python import logfile

  3. f = logfile.LogFile(“someFile.log”, '/some/path/', rotateLength=1000maxRotatedFiles=100)
  4. flobserver = LevelFileLogObserver(f)
  5. observer = flobserver.emit

twistd invocation

twistd –logger=mylogger.observer 

Now you can use the new api you defined:

  1. log.msg('the level of this message is INFO')
  2. log.msg('the level of this message is INFO', level=logging.INFO)
  3. log.msg('the level of this message is DEBUG', level=logging.DEBUG)
  4. log.msg('the level of this message is ERROR', level=logging.ERROR)
  5. log.msg('the level of this message is ERROR', level=logging.WARNING)
  6. log.msg('the level of this message is ERROR', level=logging.CRITICAL)
  7. log.err('the level of this message is ERROR')
级别共有五个,优先级关系是 '''level: DEBUG < INFO < WARNING < ERROR < CRITICAL''',如果级别为CRITICAL 那么小于它的级别的错误都不会打印出来


原文链接
阅读(2275) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~