gpt4 book ai didi

python - 扩展 Python 记录器

转载 作者:太空宇宙 更新时间:2023-11-03 13:51:41 27 4
gpt4 key购买 nike

我正在寻找一种简单的方法来扩展 logging标准 python 库中定义的功能。我只希望能够选择是否将我的日志也打印到屏幕上。

示例:通常要记录一个警告,您会调用:

logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(levelname)s: %(message)s', filename='log.log', filemode='w')
logging.warning("WARNING!!!")

这会设置日志的配置并将警告放入日志中

我想要一些类似电话的东西:

logging.warning("WARNING!!!", True)

True 语句表示日志是否也打印到标准输出。

我看过一些 overriding the logger class 的实现示例

但我是这门语言的新手,并没有真正理解正在发生的事情,或者如何实现这个想法。任何帮助将不胜感激:)

最佳答案

Python 日志记录模块定义了这些类:

发出日志消息的

记录器
处理程序,将这些消息发送到目的地。
格式化日志消息的格式化程序
过滤日志消息的过滤器

Logger 可以有Handlers。您可以通过调用 addHandler() 方法来添加它们。 Handler 可以有FiltersFormatters。您同样可以通过分别调用 addFilter()setFormatter() 方法来添加它们。

它是这样工作的:

import logging

# make a logger
main_logger = logging.getLogger("my logger")
main_logger.setLevel(logging.INFO)

# make some handlers
console_handler = logging.StreamHandler() # by default, sys.stderr
file_handler = logging.FileHandler("my_log_file.txt")

# set logging levels
console_handler.setLevel(logging.WARNING)
file_handler.setLevel(logging.INFO)

# add handlers to logger
main_logger.addHandler(console_handler)
main_logger.addHandler(file_handler)

现在,您可以像这样使用这个对象:

main_logger.info("logged in the FILE")
main_logger.warning("logged in the FILE and on the CONSOLE")

如果你只是在你的机器上运行 python,你可以在交互式控制台中输入上面的代码,你应该会看到输出。如果您有权在其中创建文件,日志文件将在您的当前目录中创建。

希望对您有所帮助!

关于python - 扩展 Python 记录器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7274732/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com