summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2012-11-11 19:18:34 +0000
committerLars Wirzenius <liw@liw.fi>2012-11-11 19:18:34 +0000
commitb6b8db637b5f9966fddea5a0869af3fe5dffde82 (patch)
tree2e904609c52084a68c78071c89fc84b6ee5336a0
parent3043dd30fdc927ff106eea85f3f25d25cb081af8 (diff)
downloadobnam-b6b8db637b5f9966fddea5a0869af3fe5dffde82.tar.gz
Configure logging to use sub-second timestamps
-rw-r--r--obnamlib/app.py39
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)
+