【问题标题】:Loguru callback function when an error is logged记录错误时的 Loguru 回调函数
【发布时间】:2021-07-09 18:15:03
【问题描述】:

我正在将一个桌面应用程序从 Python 的标准库日志记录移至 Loguru,并希望在用户界面中有一个包含日志记录信息的文本框。

有没有办法连接到 Loguru 错误级别日志记录,允许将日志消息发送到回调函数?这将允许我使用最新的错误消息更新用户界面。例如,

from loguru import logger

def error_callback(msg: str):
    # Do something with the error message
    pass

logger.add_callback(error_callback) # <-- Does something like this exist?

# So when I do this...
logger.error("Oh noes")
# ... the callback is called with the argument `"Oh noes"`

【问题讨论】:

    标签: python logging callback notifications loguru


    【解决方案1】:

    您不能只为错误添加回调,但您可以为每个日志添加回调,并在该日志内部检查它是否是错误。这个想法与适配器在 stdlib 日志记录中所做的相同,唯一的区别是 loguru 称之为 patch

    from loguru import logger
    
    def error_callback(record):
        if record['level'].name == 'ERROR':
            print('logging an error')
            # the log message is available as: record['message']
    
    logger = logger.patch(error_callback)
    
    logger.error('error')
    

    【讨论】:

    • 谢谢,补丁是我一直在寻找的,它并没有在我和我第一次阅读文档时跳出来!
    • @DanielFarrell 请注意,另一种可能性是简单地将error_callback(msg: str) 添加为具有filter 函数的接收器。这将作为任何"ERROR" 消息的回调。 logger.add(error_callback, filter=lambda r: r["level"].name == "ERROR")
    猜你喜欢
    • 2020-11-18
    • 2022-01-12
    • 2019-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多