我使用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
因此,只有错误消息才能记录到日志文件中。 为什么不将所有消息写入文件?
答案 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