除了在App Engine项目中,Python logging.handlers.SocketHandler不会广播

时间:2013-09-06 20:55:47

标签: python google-app-engine logging

我正在尝试使用SocketHandler广播我的错误日志,如果我把它放在我的app引擎项目的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')))

我对如何调试这个问题感到很茫然。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

日志记录的默认级别为WARNING,因此默认情况下不会显示INFO条消息。例如,您需要rootLogger.setLevel(logging.INFO)来查看INFO条消息,或将级别设置为logging.DEBUG以查看所有消息。

更新:很难看到logging.info()无法输出logging.info()的内容,除非涉及过滤器或者在logging.error()期间出错。呼叫。请发布一个可运行的脚本,该脚本在使用日志记录套接字服务器described in the docs运行时演示了该问题。

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