Kaydet (Commit) 048840c4 authored tarafından Fred Drake's avatar Fred Drake

style consistency:

- always include a space after the "#" that starts a comment
- easier to read imports
üst 006483b0
...@@ -527,27 +527,27 @@ the console messages should not. Here's how you can achieve this: ...@@ -527,27 +527,27 @@ the console messages should not. Here's how you can achieve this:
\begin{verbatim} \begin{verbatim}
import logging import logging
#set up logging to file - see previous section for more details # set up logging to file - see previous section for more details
logging.basicConfig(level=logging.DEBUG, logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s', format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
datefmt='%m-%d %H:%M', datefmt='%m-%d %H:%M',
filename='/temp/myapp.log', filename='/temp/myapp.log',
filemode='w') filemode='w')
#define a Handler which writes INFO messages or higher to the sys.stderr # define a Handler which writes INFO messages or higher to the sys.stderr
console = logging.StreamHandler() console = logging.StreamHandler()
console.setLevel(logging.INFO) console.setLevel(logging.INFO)
#set a format which is simpler for console use # set a format which is simpler for console use
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s') formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
#tell the handler to use this format # tell the handler to use this format
console.setFormatter(formatter) console.setFormatter(formatter)
#add the handler to the root logger # add the handler to the root logger
logging.getLogger('').addHandler(console) logging.getLogger('').addHandler(console)
#Now, we can log to the root logger, or any other logger. First the root... # Now, we can log to the root logger, or any other logger. First the root...
logging.info('Jackdaws love my big sphinx of quartz.') logging.info('Jackdaws love my big sphinx of quartz.')
#Now, define a couple of other loggers which might represent areas in your # Now, define a couple of other loggers which might represent areas in your
#application: # application:
logger1 = logging.getLogger('myapp.area1') logger1 = logging.getLogger('myapp.area1')
logger2 = logging.getLogger('myapp.area2') logger2 = logging.getLogger('myapp.area2')
...@@ -601,11 +601,11 @@ socketHandler = logging.handlers.SocketHandler('localhost', ...@@ -601,11 +601,11 @@ socketHandler = logging.handlers.SocketHandler('localhost',
# an unformatted pickle # an unformatted pickle
rootLogger.addHandler(socketHandler) rootLogger.addHandler(socketHandler)
#Now, we can log to the root logger, or any other logger. First the root... # Now, we can log to the root logger, or any other logger. First the root...
logging.info('Jackdaws love my big sphinx of quartz.') logging.info('Jackdaws love my big sphinx of quartz.')
#Now, define a couple of other loggers which might represent areas in your # Now, define a couple of other loggers which might represent areas in your
#application: # application:
logger1 = logging.getLogger('myapp.area1') logger1 = logging.getLogger('myapp.area1')
logger2 = logging.getLogger('myapp.area2') logger2 = logging.getLogger('myapp.area2')
...@@ -620,14 +620,18 @@ At the receiving end, you can set up a receiver using the ...@@ -620,14 +620,18 @@ At the receiving end, you can set up a receiver using the
\module{SocketServer} module. Here is a basic working example: \module{SocketServer} module. Here is a basic working example:
\begin{verbatim} \begin{verbatim}
import struct, cPickle, logging, logging.handlers import cPickle
import logging
import logging.handlers
import SocketServer
import struct
from SocketServer import ThreadingTCPServer, StreamRequestHandler
class LogRecordStreamHandler(StreamRequestHandler): class LogRecordStreamHandler(SocketServer.StreamRequestHandler):
""" """Handler for a streaming logging request.
Handler for a streaming logging request. It basically logs the record
using whatever logging policy is configured locally. This basically logs the record using whatever logging policy is
configured locally.
""" """
def handle(self): def handle(self):
...@@ -652,31 +656,29 @@ class LogRecordStreamHandler(StreamRequestHandler): ...@@ -652,31 +656,29 @@ class LogRecordStreamHandler(StreamRequestHandler):
return cPickle.loads(data) return cPickle.loads(data)
def handleLogRecord(self, record): def handleLogRecord(self, record):
#if a name is specified, we use the named logger rather than the one # if a name is specified, we use the named logger rather than the one
#implied by the record. # implied by the record.
if self.server.logname is not None: if self.server.logname is not None:
name = self.server.logname name = self.server.logname
else: else:
name = record.name name = record.name
logger = logging.getLogger(name) logger = logging.getLogger(name)
#N.B. EVERY record gets logged. This is because Logger.handle # N.B. EVERY record gets logged. This is because Logger.handle
#is normally called AFTER logger-level filtering. If you want # is normally called AFTER logger-level filtering. If you want
#to do filtering, do it at the client end to save wasting # to do filtering, do it at the client end to save wasting
#cycles and network bandwidth! # cycles and network bandwidth!
logger.handle(record) logger.handle(record)
class LogRecordSocketReceiver(ThreadingTCPServer): class LogRecordSocketReceiver(SocketServer.ThreadingTCPServer):
""" """simple TCP socket-based logging receiver suitable for testing.
A simple-minded TCP socket-based logging receiver suitable for test
purposes.
""" """
allow_reuse_address = 1 allow_reuse_address = 1
def __init__(self, host='localhost', def __init__(self, host='localhost',
port=logging.handlers.DEFAULT_TCP_LOGGING_PORT, port=logging.handlers.DEFAULT_TCP_LOGGING_PORT,
handler=LogRecordStreamHandler): handler=LogRecordStreamHandler):
ThreadingTCPServer.__init__(self, (host, port), handler) SocketServer.ThreadingTCPServer.__init__(self, (host, port), handler)
self.abort = 0 self.abort = 0
self.timeout = 1 self.timeout = 1
self.logname = None self.logname = None
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment