瀏覽代碼

Separated setup of boundIO logger from filename-indicated loggers.

Jason R. Coombs 12 年之前
父節點
當前提交
a99975f31d
共有 3 個文件被更改,包括 27 次插入25 次删除
  1. 6 8
      supervisor/dispatchers.py
  2. 19 17
      supervisor/loggers.py
  3. 2 0
      supervisor/tests/base.py

+ 6 - 8
supervisor/dispatchers.py

@@ -96,11 +96,9 @@ class POutputDispatcher(PDispatcher):
         capture_maxbytes = getattr(process.config,
                                    '%s_capture_maxbytes' % channel)
         if capture_maxbytes:
-            self.capturelog = self.process.config.options.getLogger(
-                None, # BoundIO
-                loggers.LevelsByName.INFO,
-                '%(message)s',
-                rotating=False,
+            self.capturelog = loggers.handle_boundIO(
+                self.process.config.options.getLogger(),
+                fmt='%(message)s',
                 maxbytes=capture_maxbytes,
                 )
 
@@ -132,9 +130,9 @@ class POutputDispatcher(PDispatcher):
         fmt = '%(message)s'
         if logfile == 'syslog':
             fmt = ' '.join((config.name, fmt))
-        self.mainlog = config.options.getLogger(
-            logfile,
-            loggers.LevelsByName.INFO,
+        self.mainlog = loggers.handle_file(
+            config.options.getLogger(),
+            filename=logfile,
             fmt=fmt,
             rotating=not not maxbytes, # optimization
             maxbytes=maxbytes,

+ 19 - 17
supervisor/loggers.py

@@ -320,31 +320,33 @@ class SyslogHandler(Handler):
         except:
             self.handleError(record)
 
-def getLogger(filename, level, fmt, rotating=False, maxbytes=0, backups=0):
+def getLogger(level=None):
+    return Logger(level)
 
-    handlers = []
+_2MB = 1<<21
 
-    logger = Logger(level)
+def handle_boundIO(logger, fmt, maxbytes=_2MB):
+    io = BoundIO(maxbytes)
+    handler = StreamHandler(io)
+    handler.setLevel(logger.level)
+    handler.setFormat(fmt)
+    logger.addHandler(handler)
+    logger.getvalue = io.getvalue
 
-    if filename is None:
-        if not maxbytes:
-            maxbytes = 1<<21 #2MB
-        io = BoundIO(maxbytes)
-        handlers.append(StreamHandler(io))
-        logger.getvalue = io.getvalue
+    return logger
 
-    elif filename == 'syslog':
-        handlers.append(SyslogHandler())
+def handle_file(logger, filename, fmt, rotating=False, maxbytes=0, backups=0):
+    if filename == 'syslog':
+        handler = SyslogHandler()
 
     else:
         if rotating is False:
-            handlers.append(FileHandler(filename))
+            handler = FileHandler(filename)
         else:
-            handlers.append(RotatingFileHandler(filename,'a',maxbytes,backups))
+            handler = RotatingFileHandler(filename, 'a', maxbytes, backups)
 
-    for handler in handlers:
-        handler.setFormat(fmt)
-        handler.setLevel(level)
-        logger.addHandler(handler)
+    handler.setFormat(fmt)
+    handler.setLevel(logger.level)
+    logger.addHandler(handler)
 
     return logger

+ 2 - 0
supervisor/tests/base.py

@@ -249,6 +249,8 @@ class DummyOptions:
         self.umaskset = mask
 
 class DummyLogger:
+    level = None
+
     def __init__(self):
         self.reopened = False
         self.removed = False