diff options
author | Lars Wirzenius <liw@liw.fi> | 2012-11-11 19:18:34 +0000 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2012-11-11 19:18:34 +0000 |
commit | b6b8db637b5f9966fddea5a0869af3fe5dffde82 (patch) | |
tree | 2e904609c52084a68c78071c89fc84b6ee5336a0 | |
parent | 3043dd30fdc927ff106eea85f3f25d25cb081af8 (diff) | |
download | obnam-b6b8db637b5f9966fddea5a0869af3fe5dffde82.tar.gz |
Configure logging to use sub-second timestamps
-rw-r--r-- | obnamlib/app.py | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/obnamlib/app.py b/obnamlib/app.py index 2a452065..e0685ab5 100644 --- a/obnamlib/app.py +++ b/obnamlib/app.py @@ -228,3 +228,42 @@ class App(cliapp.Application): else: return time.time() + def setup_logging(self): # pragma: no cover + '''Set up logging.''' + + import logging + + level_name = self.settings['log-level'] + levels = { + 'debug': logging.DEBUG, + 'info': logging.INFO, + 'warning': logging.WARNING, + 'error': logging.ERROR, + 'critical': logging.CRITICAL, + 'fatal': logging.FATAL, + } + level = levels.get(level_name, logging.INFO) + + if self.settings['log'] == 'syslog': + handler = logging.handlers.SysLogHandler(address='/dev/log') + elif self.settings['log'] and self.settings['log'] != 'none': + handler = cliapp.app.LogHandler( + self.settings['log'], + perms=int(self.settings['log-mode'], 8), + maxBytes=self.settings['log-max'], + backupCount=self.settings['log-keep'], + delay=False) + else: + handler = logging.FileHandler('/dev/null') + # reduce amount of pointless I/O + level = logging.FATAL + + fmt = '%(asctime)s %(created)f %(levelname)s %(message)s' + datefmt = '%Y-%m-%d %H:%M:%S' + formatter = logging.Formatter(fmt, datefmt) + handler.setFormatter(formatter) + + logger = logging.getLogger() + logger.addHandler(handler) + logger.setLevel(level) + |