Implement lftools logger 65/5665/14
authorJessica Wagantall <jwagantall@linuxfoundation.org>
Fri, 28 Jul 2017 07:04:34 +0000 (00:04 -0700)
committerThanh Ha <thanh.ha@linuxfoundation.org>
Fri, 4 Aug 2017 19:17:22 +0000 (15:17 -0400)
Add generic logger configuration file to be used by lftools scripts.

This logger checks 3 locations for a logger.ini file:

1) ~/.config/lftools/logging.ini
2) /etc/lftools/logging.ini
3) sys.prefix/etc/logging.ini

Dev only...
4) etc/logging.ini (Default fallback in dev environments)

JIRA: RELENG-321
Change-Id: I8fef663dd6b02947f7722424ecce6e2cc78debec
Signed-off-by: Jessica Wagantall <jwagantall@linuxfoundation.org>
MANIFEST.in
etc/logging.ini [new file with mode: 0644]
lftools/__init__.py
setup.py

index f9bd145..a80aeab 100644 (file)
@@ -1 +1,2 @@
+include etc/logging.ini
 include requirements.txt
diff --git a/etc/logging.ini b/etc/logging.ini
new file mode 100644 (file)
index 0000000..293a14b
--- /dev/null
@@ -0,0 +1,22 @@
+[loggers]
+keys=root
+
+[handlers]
+keys=consoleHandler
+
+[formatters]
+keys=simpleFormatter
+
+[logger_root]
+level=DEBUG
+handlers=consoleHandler
+
+[handler_consoleHandler]
+class=StreamHandler
+level=INFO
+formatter=simpleFormatter
+args=(sys.stdout,)
+
+[formatter_simpleFormatter]
+format=%(asctime)s (%(levelname)s) %(name)s: %(message)s
+datefmt=
index f9dee4d..38ac20d 100644 (file)
 
 __author__ = 'Thanh Ha'
 __version__ = '0.7.0-dev'
+
+import logging
+import logging.config
+import os
+import sys
+
+
+def find_log_ini(file_name='logging.ini'):
+    """Find the logging.ini file.
+
+    Precedence:
+        1) ~/.config/lftools/logging.ini
+        2) /etc/lftools/logging.ini
+        3) sys.prefix/etc/logging.ini
+
+        Dev only...
+        4) etc/logging.ini (Default fallback in dev environments)
+    """
+    homedir = os.path.expanduser('~')
+    log_file_etc = os.path.abspath(os.path.join('/etc', 'lftools', file_name))
+    log_file_home = os.path.abspath(os.path.join(homedir, '.config', 'lftools', file_name))
+    log_file_pyprefix = os.path.abspath(os.path.join(sys.prefix, 'etc', file_name))
+
+    if os.path.exists(log_file_home):
+        file_path = log_file_home
+    elif os.path.exists(log_file_etc):
+        file_path = log_file_etc
+    elif os.path.exists(log_file_pyprefix):
+        file_path = log_file_pyprefix
+    else:
+        file_path = os.path.join('etc', file_name)
+    return file_path
+
+
+log_ini_file = find_log_ini()
+logging.config.fileConfig(log_ini_file)
+
+log = logging.getLogger(__name__)
+log.info("Using logger config file {}".format(log_ini_file))
index c96443e..453032b 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -68,4 +68,5 @@ setup(
         'shell/sign',
         'shell/version',
     ],
+    data_files=[('etc', ['etc/logging.ini'])],
 )