如何使用Python的RotatingFileHandler
·
问题:如何使用Python的RotatingFileHandler
我正在尝试对logging
模块的RotatingFileHandler
进行如下测试:
import logging
from logging.handlers import RotatingFileHandler
# logging.basicConfig(filename="example.log", level=logging.DEBUG)
logger = logging.getLogger('my_logger')
handler = RotatingFileHandler("my_log.log", maxBytes=2000, backupCount=10)
logger.addHandler(handler)
for _ in range(10000):
logger.debug("Hello, world!")
但是,注释掉logging.basicConfig
行后,生成的my_log.log
文件不包含数据:
如果我在logging.basicConfig(filename="example.log", level=logging.DEBUG)
行中添加注释,我会得到预期的带有编号后缀的my_log.log
文件。但是,还有example.log
是一个(相对)大的文件:
如何设置日志记录以便它只生成my_log.log
文件,而不是大的example.log
文件?
解答
Python 提供了 5 个开箱即用的日志记录级别(按严重性递增的顺序):DEBUG
、INFO
、WARNING
、ERROR
和CRITICAL
。默认的是WARNING
。文档说,那
没有_lvl_ 严重的日志消息将被忽略。
因此,如果您使用带有默认设置的.debug
,您将不会在日志中看到任何内容。
最简单的解决方法是使用logger.warning
函数而不是logger.debug
:
import logging
from logging.handlers import RotatingFileHandler
logger = logging.getLogger('my_logger')
handler = RotatingFileHandler('my_log.log', maxBytes=2000, backupCount=10)
logger.addHandler(handler)
for _ in range(10000):
logger.warning('Hello, world!')
如果要更改记录器级别,可以使用.setLevel
方法:
import logging
from logging.handlers import RotatingFileHandler
logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG)
handler = RotatingFileHandler('my_log.log', maxBytes=2000, backupCount=10)
logger.addHandler(handler)
for _ in range(10000):
logger.debug('Hello, world!')
更多推荐
所有评论(0)