我正在尝试对 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
、错误
和CRITICAL
。默认一个is WARNING
.文档说,
Logging messages which are less severe than lvl will be ignored.
因此,如果您将 .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!')
关于python - 如何使用 Python 的 RotatingFileHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40088496/