commit 31c55cd3289b606fb44daa336a565bf77b522f96 Author: aagbsn aagbsn@extc.org Date: Thu Mar 8 05:37:11 2012 -0800
5331 - Add log rotation to BridgeDB
Switches BridgeDB logger to use RotatingFileHandler. The defaults are to keep 5 backups, of 10MB each. Adds LOGFILE_COUNT, LOGFILE_ROTATE_SIZE to bridgedb.conf, and sets the default value for LOGLEVEL to WARNING.
Thanks to weasel for this patch. --- bridgedb.conf | 7 ++++++- lib/bridgedb/Main.py | 19 ++++++++++++------- 2 files changed, 18 insertions(+), 8 deletions(-)
diff --git a/bridgedb.conf b/bridgedb.conf index 5d5dbad..81a2688 100644 --- a/bridgedb.conf +++ b/bridgedb.conf @@ -11,8 +11,13 @@ PIDFILE = "bridgedb.pid"
# Either a file to log to, or None if we should log to the console. LOGFILE = "bridgedb.log" + +# Logfile rotation settings +LOGFILE_COUNT = 5 +LOGFILE_ROTATE_SIZE = 10000000 + # One of "DEBUG", "INFO", "WARNING", "ERROR"... -LOGLEVEL = "INFO" +LOGLEVEL = "WARNING"
# Files from which we read bridge descriptors, on start and on SIGHUP. BRIDGE_FILES = [ "./bridge-descriptors" ] diff --git a/lib/bridgedb/Main.py b/lib/bridgedb/Main.py index 648accd..8ef6fc0 100644 --- a/lib/bridgedb/Main.py +++ b/lib/bridgedb/Main.py @@ -11,6 +11,7 @@ import signal import sys import time import logging +import logging.handlers import gettext
from twisted.internet import reactor @@ -110,14 +111,18 @@ def configureLogging(cfg): """ level = getattr(cfg, 'LOGLEVEL', 'WARNING') level = getattr(logging, level) - extra = {} - if getattr(cfg, "LOGFILE"): - extra['filename'] = cfg.LOGFILE
- logging.basicConfig(format='%(asctime)s [%(levelname)s] %(message)s', - datefmt="%b %d %H:%M:%S", - level=level, - **extra) + logging.getLogger().setLevel(level) + if getattr(cfg, "LOGFILE"): + logfile_count = getattr(cfg, "LOGFILE_COUNT", 5) + logfile_rotate_size = getattr(cfg, "LOGFILE_ROTATE_SIZE", 10000000) + + handler = logging.handlers.RotatingFileHandler(cfg.LOGFILE, 'a', + logfile_rotate_size, + logfile_count) + formatter = logging.Formatter('%(asctime)s [%(levelname)s] %(message)s', "%b %d %H:%M:%S") + handler.setFormatter(formatter) + logging.getLogger().addHandler(handler)
def getKey(fname): """Load the key stored in fname, or create a new 32-byte key and store
tor-commits@lists.torproject.org