aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'gkeys/gkeys/log.py')
-rw-r--r--gkeys/gkeys/log.py72
1 files changed, 72 insertions, 0 deletions
diff --git a/gkeys/gkeys/log.py b/gkeys/gkeys/log.py
new file mode 100644
index 0000000..a16767e
--- /dev/null
+++ b/gkeys/gkeys/log.py
@@ -0,0 +1,72 @@
+#
+#-*- coding:utf-8 -*-
+
+"""
+ Gentoo-Keys - Log.py
+
+ Logging module, placeholder for our site-wide logging module
+
+ @copyright: 2012 by Brian Dolbec <dol-sen> <dol-sen@users.sourceforge.net>
+ @license: GNU GPL2, see COPYING for details.
+"""
+
+import logging
+import time
+import os
+
+from gkeys.fileops import ensure_dirs
+
+
+NAMESPACE = 'gentoo-keys'
+logger = None
+Console_handler = None
+
+log_levels = {
+ 'CRITICAL': logging.CRITICAL,
+ 'DEBUG': logging.DEBUG,
+ 'ERROR': logging.ERROR,
+ 'FATAL': logging.FATAL,
+ 'INFO': logging.INFO,
+ 'NOTSET': logging.NOTSET,
+ 'WARN': logging.WARN,
+ 'WARNING': logging.WARNING,
+}
+
+
+def set_logger(namespace=None, logpath='', level=None,
+ dirmode=0o775, filemask=0o002):
+ global logger, NAMESPACE, Console_handler
+ if not namespace:
+ namespace = NAMESPACE
+ else:
+ NAMESPACE = namespace
+ logger = logging.getLogger(namespace)
+ logger.setLevel(log_levels['DEBUG'])
+ # create formatter and add it to the handlers
+ log_format = '%(asctime)s %(name)-12s %(levelname)-8s %(message)s'
+ formatter = logging.Formatter(log_format)
+ # add the handlers to logger
+ if logpath:
+ ensure_dirs(logpath, mode=dirmode, fatal=True)
+ os.umask(filemask)
+ logname = os.path.join(logpath,
+ '%s-%s.log' % (namespace, time.strftime('%Y%m%d-%H:%M')))
+ file_handler = logging.FileHandler(logname)
+ if level:
+ #print "Setting cli log level", level, log_levels[level]
+ file_handler.setLevel(log_levels[level])
+ else:
+ #print "Create file handler which logs even debug messages"
+ file_handler.setLevel(log_levels['DEBUG'])
+ file_handler.setFormatter(formatter)
+ logger.addHandler(file_handler)
+
+ # create console handler with a higher log level
+ Console_handler = logging.StreamHandler()
+ Console_handler.setLevel(logging.ERROR)
+ #Console_handler.setFormatter(formatter)
+ logger.addHandler(Console_handler)
+ #print "File logger suppose to be initialized", logger, Console_handler
+ logger.debug("Loggers initialized")
+
+ return logger