0

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

[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

所以只有错误消息是记录到日志文件的。为什么它不将所有消息写入文件?

4

2 回答 2

1

Logger.setLevel(lvl) 将此记录器的阈值设置为 lvl。比 lvl 严重程度低的日志消息将被忽略。创建记录器时,级别设置为 NOTSET(当记录器是根记录器时会处理所有消息,或者当记录器是非根记录器时会委托给父级)。请注意,根记录器是使用 WARNING 级别创建的。

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

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

于 2013-06-11T22:34:13.163 回答
0

添加以下代码即可解决问题:

[logger_api]
handlers=fileapi
qualname=api
level=DEBUG   <--- Added
于 2013-06-18T07:16:50.677 回答