python - 文件处理程序的不同日志记录级别和 Python 中的显示

标签 python logging

我正在使用 Python 中的 logging 模块来编写调试和错误消息。

我想将 logging.DEBUG 或更高级别的所有消息写入文件。

但是,我只想将 logging.WARNING 或更大的消息打印到屏幕上。

仅使用一个 Logger 和一个 FileHandler 是否可能?

最佳答案

如前所述,处理程序非常容易创建和添加,您最好只使用两个处理程序。但是,如果出于某种原因你想坚持使用一个,Python logging cookbook有一个部分描述或多或少你想做什么:记录到控制台和文件,但在不同的级别(它甚至告诉你如何做不同的格式)。不过,它使用单个 StreamHandler 而不是 FileHandler 来完成:

import logging

# set up logging to file - see previous section for more details
logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
                    datefmt='%m-%d %H:%M',
                    filename='/temp/myapp.log',
                    filemode='w')
# define a Handler which writes INFO messages or higher to the sys.stderr
console = logging.StreamHandler()
console.setLevel(logging.INFO)
# set a format which is simpler for console use
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
# tell the handler to use this format
console.setFormatter(formatter)
# add the handler to the root logger
logging.getLogger('').addHandler(console)

# Now, we can log to the root logger, or any other logger. First the root...
logging.info('Jackdaws love my big sphinx of quartz.')

# Now, define a couple of other loggers which might represent areas in your
# application:

logger1 = logging.getLogger('myapp.area1')
logger2 = logging.getLogger('myapp.area2')

logger1.debug('Quick zephyrs blow, vexing daft Jim.')
logger1.info('How quickly daft jumping zebras vex.')
logger2.warning('Jail zesty vixen who grabbed pay from quack.')
logger2.error('The five boxing wizards jump quickly.')

编辑:正如评论中所讨论的那样,这段代码仍然生成两个处理程序,但通过使用 basicConfig() 来“隐藏”一个构造。我强烈建议您明确地创建两者。

关于python - 文件处理程序的不同日志记录级别和 Python 中的显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6652727/

相关文章:

python - 将 pandas 数据表传输到文本文件

python - 通过应用 RFE 选择提供最佳调整 R 平方值的特征子集

.net - 如何追踪 log4net 问题

mysql - Laravel 中执行了哪些数据库触发器

ios - 对于某些类别或子系统,如何禁用os_log调试消息?

validation - 如何记录 Grails 命令对象错误?

python - 在 SPSS/Python 中运行总计

python - 在python中自动替换字符串

python - 如何使用 Python 将文件从一个子文件夹处理到每个目录中的另一个子文件夹?

遇到打开文件描述符消息时 Python 日志记录失败