Chapter 7. Logging
Twisted has its own logging systems that we’ve already seen used under
the hood by twistd. This system plays nicely with
Twisted-specific concepts like Failures
but is also compatible with Python’s standard library logging
facilities.
Basic In-Application Logging
The simplest way to add logging to your Twisted application is to
import twisted.python.log, start logging
to a file or stdout, and log events at particular log
levels as you would with the Python standard logging module. For instance,
Example 7-1 adds logging to a file for
our echo server from Chapter 2.
fromtwisted.internetimportprotocol,reactorfromtwisted.pythonimportlogclassEcho(protocol.Protocol):defdataReceived(self,data):log.msg(data)self.transport.write(data)classEchoFactory(protocol.Factory):defbuildProtocol(self,addr):returnEcho()log.startLogging(open('echo.log','w'))reactor.listenTCP(8000,EchoFactory())reactor.run()
Logging starts once log.startLogging has been called.
After that, information can be logged with log.msg or
log.err; use log.msg to log strings and use
log.err to log exceptions and
failures. The default logging format produces output like this log of the
echo server starting up, echoing one message, and terminating:
2012-11-15 20:26:37-0500 [-] Log opened. 2012-11-15 20:26:37-0500 [-] EchoFactory starting on 8000 2012-11-15 20:26:37-0500 [-] Starting factory <__main__.EchoFactory ... 2012-11-15 20:26:40-0500 [Echo,0,127.0.0.1] ...