我正在尝试使用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')))
我对如何调试这个问题感到很茫然。有什么想法吗?
答案 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(...)
。