【问题标题】:Python logging.handlers.SocketHandler not broadcasting except in App Engine projectPython logging.handlers.SocketHandler 不广播,除了在 App Engine 项目中
【发布时间】:2013-09-11 01:35:18
【问题描述】:

我正在尝试使用 SocketHandler 广播我的错误日志,如果我将它放在我的应用程序引擎项目的 main.py 中,它会很好地工作,但如果我只是编写一个简单的独立 python 脚本并运行它,它似乎没有成功广播日志。

import logging
import logging.handlers

sh = logging.handlers.SocketHandler('localhost', logging.handlers.DEFAULT_TCP_LOGGING_PORT)
rootLogger = logging.getLogger('')
rootLogger.addHandler(sh)

logging.info(['Test', 'This', 'List'])
logging.info(dict(Test = 'Blah', Test2 = 'Blah2', Test3 = dict(Test4 = 'Blah4')))

我不知道如何进行调试。有什么想法吗?

【问题讨论】:

    标签: python google-app-engine logging


    【解决方案1】:

    日志的默认级别是WARNING,所以INFO消息默认不会被看到。例如,您需要rootLogger.setLevel(logging.INFO) 才能查看INFO 消息,或者将级别设置为logging.DEBUG 才能查看所有消息。

    更新:很难看出 logging.error() 如何无法输出 logging.info() 所做的,除非涉及过滤器或在 logging.error() 期间出现错误称呼。请发布一个可运行的脚本,演示使用日志套接字服务器 described in the docs 运行时出现的问题。

    进一步更新:日志记录不会自动捕获异常。要记录异常,开发人员通常会使用try: except: 块并在异常处理代码中调用logging.exception(...)

    【讨论】:

    • 这很容易。我猜应用引擎默认将日志级别设置为调试。谢谢!
    • 这很相关,所以我将尝试在这里询问。如果我将调试级别设置为 DEBUG 或 ERROR 并使用 isEnabledFor(logging.ERROR) 我会得到 true,但它不会发送错误。信息日志发送,但如果我在日志配置后故意添加错误,它不会发送。
    • 我想我错过了沟通。我的问题是它不会广播异常。如果我采用该示例代码并通过将第一行 logging.info 更改为 logging.info 来引入异常,则不会广播该异常。
    • 所以我需要的是全局异常处理,我在这里找到了stackoverflow.com/questions/6598053/…
    猜你喜欢
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    • 2020-08-20
    • 2012-02-11
    • 2020-08-02
    • 2019-12-09
    • 1970-01-01
    相关资源
    最近更新 更多