python logger,只写错误

时间:2013-06-11 22:28:23

标签: linux logging python-2.7

我使用python 2.7.5 我创建了一个包含logger配置的文件:

[loggers]
keys=root,api

[logger_root]
handlers=screen,file

[logger_api]
handlers=fileapi
qualname=api

[formatters]
keys=simple,complex

[formatter_simple]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s

[formatter_complex]
format=%(asctime)s - %(name)s - %(levelname)s - %(module)s : %(lineno)d - %(message)s

[handlers]
keys=file,screen,fileapi

[handler_screen]
class=StreamHandler
formatter=simple
level=NOTSET
args=(sys.stdout,)

[handler_file]
class=handlers.TimedRotatingFileHandler
interval=midnight
backupCount=5
formatter=complex
level=NOTSET
args=('/var/log/FMV/fmv.log',)

[handler_fileapi]
class=handlers.TimedRotatingFileHandler
interval=midnight
backupCount=5
formatter=complex
level=NOTSET
args=('/var/log/FMV/fmv_api.log',)

当我在我的代码中调用logger.info等时:

_api_logger = logging.getLogger("api")
_api_logger.info("/index was called")
_api_logger.debug("/index was called")
_api_logger.error("/index was called")

在我的日志文件(/var/log/FMV/fmv_api.log)中,我看到以下内容:

2013-06-12 01:17:55,599 - api - ERROR - api : 13 - /index was called

因此,只有错误消息才能记录到日志文件中。  为什么不将所有消息写入文件?

2 个答案:

答案 0 :(得分:1)

Logger.setLevel(LVL) 将此记录器的阈值设置为lvl。记录不如lvl严重的消息将被忽略。创建记录器时,级别设置为NOTSET(当记录器是根记录器时会导致处理所有消息,或者当记录器是非root记录器时委托给父级)。请注意,根记录器的创建级别为WARNING。

术语“委托给父母”意味着如果记录器具有NOTSET级别,则遍历其祖先记录器链,直到找到具有NOTSET以外级别的祖先,或者到达根目录。

http://docs.python.org/2/library/logging.html#logging.Logger.setLevel

答案 1 :(得分:0)

通过添加以下代码解决了该问题:

[logger_api]
handlers=fileapi
qualname=api
level=DEBUG   <--- Added