- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
如何更改 TwistedMatrix 中使用的日志系统的时间格式?
我注意到了 http://twistedmatrix.com/trac/browser/tags/releases/twisted-11.0.0/twisted/python/log.py#L389应该允许更改时间格式,但它不起作用对我来说,这是我执行的完整测试程序 python myscript.py
from twisted.internet import endpoints, reactor
from twisted.python import log
from twisted.application.service import Application
from twisted.python.log import ILogObserver, FileLogObserver
from twisted.python.logfile import DailyLogFile
#[... here my definition of a ProxyFactory()...]
application = Application("myapp")
logfile = DailyLogFile("my.log", './')
flo = FileLogObserver(logfile)
flo.timeFormat = "%Y-%m-%d %H:%M:%S,%f%z"
application.setComponent(ILogObserver, flo.emit)
log.startLogging(logfile)
log.msg("this is a test")
endpoint = endpoints.serverFromString(reactor, portstr)
d = endpoint.listen(ProxyFactory())
d.addErrback(shutdown, reactor)
reactor.run()
没有得到预期的:“%Y-%m-%d %H:%M:%S,%f%z”(毫秒)
2013-06-12 17:08:07+0200 [-] Log opened.
2013-06-12 17:08:12+0200 [-] this is a test
我错过了什么?
还有:
(其他引用:http://twistedmatrix.com/trac/ticket/3513)
编辑:我试图重新表述我的两个问题。
所以从 JeanPaul 发布的答案中,我了解到我正在将东西和经典 python 文件与另一个 tac
文件混合(在阅读 JeanPaul 之前我不知道)。顺便说一句,我在下面尝试了这个,但仍然没有得到我需要的毫秒数:
(这次我启动twistd -noy my.tac
)
from twisted.application.service import Application
from twisted.python.log import ILogObserver, FileLogObserver
from twisted.python.logfile import DailyLogFile
application = Application("myapp")
logfile = DailyLogFile("my.log", "./")
flo = FileLogObserver(logfile)
flo.timeFormat = "%Y-%m-%d %H:%M:%S,%f %z"
application.setComponent(ILogObserver, flo.emit)
并得到:
2013-06-13 17:23:23,%f+0000 [-] Log opened.
2013-06-13 17:23:23,%f+0000 [-] using set_wakeup_fd
2013-06-13 17:23:23,%f+0000 [-] twistd 12.0.0 (/usr/bin/python 2.7.3) starting up.
2013-06-13 17:23:23,%f+0000 [-] reactor class: twisted.internet.pollreactor.PollReactor.
2013-06-13 17:23:30,%f+0000 [-] Received SIGINT, shutting down.
2013-06-13 17:23:30,%f+0000 [-] Main loop terminated.
2013-06-13 17:23:30,%f+0000 [-] Server Shut Down.
如你所见,如果我模仿 @http://twistedmatrix.com/trac/browser/trunk/twisted/python/log.py#L351 所做的事情,看第367行,python和时间给我这个毫秒数。还要注意 %Z 是错误的,它应该是 +0200,但我可以忍受它,而我需要毫秒......
Python 2.7.3 (default, Jan 2 2013, 13:56:14)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> datetime.datetime.now().strftime("%H:%M:%S.%f")
'17:28:06.566135'
>>> import time
>>> when = time.time()
>>> import datetime
>>> datetime.datetime.fromtimestamp(when).strftime("%Y-%m-%d %H:%M:%S,%f%z")
'2013-06-13 17:33:20,535350'
>>> import twisted
>>> twisted.version
Version('twisted', 12, 0, 0)
最佳答案
您在这里对日志系统做了几件不同的事情。您要求 twistd
使用 flo.emit
作为日志观察器。这将在 twistd
加载此 tac
文件 中定义的应用程序
后生效。然后,您手动初始化日志系统以使用 logfile
并立即记录一条消息。由于这是 tac
文件的一部分,twistd
尚未完成加载 application
,因此它尚未应用您指定的日志记录配置ILogObserver
。相反,日志事件由您使用 startLogging
- logfile
设置的日志观察器处理,它对自定义时间戳格式一无所知。
停止 startLogging
调用,您应该会看到 在 应用程序
从 tac
加载后记录的事件> 文件格式正确。
您可以在 logging howto 中阅读所有关于日志记录在 Twisted 中如何工作的信息。以及如何在 application howto 中为 twistd
配置它.
另请注意,支持 custom time formatting using datetime.strftime
是first introduced in Twisted 13.0.0 .从您问题的输出来看,您似乎拥有 Twisted 12.0.0。这意味着格式化是使用 time.strftime
完成的,它不支持微秒。
在Twisted 13.0.0之前,要获取时间格式中的微秒,需要覆盖FileLogObserver
的formatTime
方法,调用datetime.strftime
你自己。
关于python - 更改扭曲矩阵日志中的时间格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17071029/
以下代码在2端口上监听,当有消息时修改全局dict对象。并且有一个计时器也会修改字典。 d = {} class x(Protocol): def dataReceived(self, dat
Twisted 怎么样?知道函数应该以异步方式执行吗? 异步函数应该返回一个带有call-/errbacks的Deferred(immeadiately),当收到“异步”数据时将被调用。接收到的数据作
我扭曲了服务器。它与插件一起运行。我想根据请求为每个条目编写唯一的前缀。 这意味着当user1发出请求时,它将生成一个唯一的字符串,该字符串将以日志记录为前缀(仅用于此请求)。当user2发出请求时,
我正在使用校准的立体声对进行稀疏重建。这是我一步一步采取的方法: 1- 我使用 MATLAB 中的立体相机校准器应用程序校准了我的立体相机。 2-我拍摄了一对立体图像,并对每个图像进行了不失真处理。
我关注了这个tutorial但我不知道如何从服务器获取响应数据。 class Service(Resource): def render_POST(self, request):
我的网站上有一个页面,它从数据库中获取大量图像并将它们放在一个网格中。 图像的形状和大小各不相同。 我想要做的是显示图像,每个图像都具有相同的宽度和高度,但不会扭曲。 现在我的CSS是 .image{
我正在尝试创建一个简单的代金券程序。 客户端连接到服务器并询问凭证上是否还有时间,如果是,服务器会响应多少时间。 我控制服务器和客户端,客户端也由我编写代码。 现在这就是我的服务器端,客户端是不言自明
假设我通过 TCP 连接快速接收数据。我必须对其进行某种处理。因为我不想阻塞 react 器线程,所以我将处理卸载到后台线程。 数据到达的速度超过了我处理它的速度。如果我将数据放入队列中,队列会无限增
我有一个简单的客户端,它向服务器发送请求并接收响应: from StringIO import StringIO from twisted.internet import reactor fro
我目前正在使用 python/twisted 构建一个 http 服务器。 该服务器必须在另一个 Web 服务器上获取内容,将其存储在本地并将响应发送回客户端。如果遇到 404,它必须尝试提供本地文件
我有一个扭曲的 react 堆监听传入的数据。我有第二个 react 器在特定时间间隔执行 http 请求,将结果发送到第一个 react 器。两者都运行良好。 现在我想把它放在一起在一个 react
我正在尝试使用 ImageMagick 的透视 功能。我看过这些例子,但我无法理解值对应的是什么。我有这段代码: var stream = new MemoryStream(); using (Mag
我有一个应用程序的想法,该应用程序采用每个角落有四个正方形的打印页面,并允许您在至少有两个正方形可见的情况下测量纸上的对象。我希望能够让用户从不太完美的角度拍照,但仍能准确测量物体。 由于我在该领域缺
我试图让用户在文本框中输入文本,并让程序生成所有可能的组合,但最少 3 个字符和最多 6 个字符除外。我不需要像 ' 这样的无用词as'、'a'、'i'、'to' 等弄乱了我的阵列。我还将根据字典检查
给定一个包含 +ve 和 -ve 整数的数组,找出不允许跳过 2 个连续元素的最大总和(即,您必须至少选择其中一个才能向前移动)。 例如:- 10、20、30、-10、-50、40、-50、-1、-3
什么时候应该使用 twisted.python.failure.Failure,什么时候应该使用 twisted.internet.error.ConnectionDone?或者我应该做 twiste
在 Twisted 中有 1 天的经验,我尝试安排消息发送以回复 tcp 客户端: import os, sys, time from twisted.internet import protocol
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
更新:为了便于阅读,这里是如何在 react 器关闭之前添加回调: reactor.addSystemEventTrigger('before', 'shutdown', callable) 原始问题
所以我已经查看了一些涉及使用 python 和 Twisted 框架编写 HTTP 代理的事情。 基本上,就像其他一些问题一样,我希望能够修改将发送回浏览器的数据。也就是说,浏览器请求资源,代理将获取
我是一名优秀的程序员,十分优秀!