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 Failure
s
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.
from
twisted.internet
import
protocol
,
reactor
from
twisted.python
import
log
class
Echo
(
protocol
.
Protocol
):
def
dataReceived
(
self
,
data
):
log
.
msg
(
data
)
self
.
transport
.
write
(
data
)
class
EchoFactory
(
protocol
.
Factory
):
def
buildProtocol
(
self
,
addr
):
return
Echo
()
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] ...
Get Twisted Network Programming Essentials, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.