как я могу изменить формат времени системы регистрации, используемой в 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
что мне не хватает?
также:
- как я должен изменить этот формат времени, когда мне не нужна регистрация файлов, а только печать stderr?
(другая ссылка: 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)