gpt4 book ai didi

python - 使用twisted.python.log 的代码出现扭曲试验错误

转载 作者:太空宇宙 更新时间:2023-11-03 17:32:42 25 4
gpt4 key购买 nike

我似乎无法登录到标准输出并在同一位代码上运行试用。

临时.py

from sys import stdout
from twisted.python.log import startLogging
startLogging(stdout)

class Foo(object):
pass

temp_test.py

from twisted.trial import unittest
from temp import Foo

class FooTestCase(unittest.TestCase):
pass

输出

2015-07-27 17:45:06-0400 [-] Log opened.
2015-07-27 17:45:06-0400 [-] Unable to format event {'log_namespace': 'twisted.logger._global', 'log_level': <LogLevel=warn>, 'fileNow': '/Users/james/Dropbox/code/demo/server/venv/lib/python2.7/site-packages/twisted/python/log.py', 'format': '%(log_legacy)s', 'lineNow': 210, 'fileThen': '/Users/james/Dropbox/code/demo/server/venv/lib/python2.7/site-packages/twisted/python/log.py', 'log_source': None, 'system': '-', 'lineThen': 210, 'log_logger': <Logger 'twisted.logger._global'>, 'time': 1438033506.184351, 'log_format': 'Warning: primary log target selected twice at <{fileNow}:{lineNow}> - previously selected at <{fileThen:logThen}>. Remove one of the calls to beginLoggingTo.', 'message': (), 'log_time': 1438033506.184351}: Invalid conversion specification
2015-07-27 17:45:06-0400 [-] Log opened.

为什么这段代码失败了?看起来它正在尝试开始记录两次?

<小时/>

我确实注意到 twisted.python.log 已被 twisted.logger 取代;它应该只是一个包装。不过,Logger 类似乎没有与 startLogging(stdout) 直接类似。

最佳答案

这里的部分问题是 a bug that has already been fixed in Twisted ,此处设置警告字符串的格式。

但是,真正的问题是您开始记录两次,一次通过运行 Trial,它设置自己的日志观察器来捕获记录的异常,一次通过调用 startLogging code> 在模块范围内。如果您使用the new API for doing this,您会得到类似的错误,因此切换到 twisted.logger 虽然从长远来看是个好主意,但实际上并没有什么关系。

正确的解决方案通常是不要开始记录自己的日志;让 twistdTrial 为您做这件事。如果您确实需要自己启动它,它应该位于 main 函数的上下文中,该函数仅在“真正”启动程序时运行,在试用之外,例如。

关于python - 使用twisted.python.log 的代码出现扭曲试验错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31664752/

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