Setup basic logging for reclass
* Create a new module, reclass.logs with a basic configuration
provided to logging.config.dictConfig()
* Log messages to stderr by default
* Set default log (verbosity) level to ERROR
* Provide a new flag, --debug, to enable debug messaging (set log
level to DEBUG)
This does not make use of the logging as much as provide the basic
structures to use.
diff --git a/reclass/cli.py b/reclass/cli.py
index 5666e16..f09067d 100644
--- a/reclass/cli.py
+++ b/reclass/cli.py
@@ -15,6 +15,7 @@
from reclass.errors import ReclassException
from reclass.defaults import *
from reclass.constants import MODE_NODEINFO
+from reclass.logs import logger
from reclass.version import *
def main():
@@ -26,6 +27,7 @@
options = get_options(RECLASS_NAME, VERSION, DESCRIPTION,
defaults=defaults)
+ logger.debug('defaults: %s' % options)
storage = get_storage(options.storage_type, options.nodes_uri,
options.classes_uri, default_environment='base')
class_mappings = defaults.get('class_mappings')
diff --git a/reclass/config.py b/reclass/config.py
index 17d0dc6..572cfed 100644
--- a/reclass/config.py
+++ b/reclass/config.py
@@ -42,6 +42,10 @@
action="store_true",
default=defaults.get('pretty_print', OPT_PRETTY_PRINT),
help='try to make the output prettier [%default]')
+ ret.add_option('-d', '--debug', dest='debug',
+ action="store_true",
+ default=False,
+ help='enable logging to console for debug [%default]')
return ret
diff --git a/reclass/logs.py b/reclass/logs.py
new file mode 100644
index 0000000..41da08e
--- /dev/null
+++ b/reclass/logs.py
@@ -0,0 +1,50 @@
+#
+# -*- coding: utf-8 -*-
+#
+# This file is part of reclass (http://github.com/madduck/reclass)
+#
+# Copyright © 2007–14 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+
+import logging.config
+
+from reclass.config import get_options
+from reclass.defaults import RECLASS_NAME
+from reclass.version import VERSION, DESCRIPTION
+
+
+RECLASS_LOGGER = 'reclass'
+
+options = get_options(RECLASS_NAME, VERSION, DESCRIPTION)
+LOG_LEVEL = 'ERROR'
+if options.debug:
+ LOG_LEVEL = 'DEBUG'
+
+
+LOGGING_CONFIG = {
+ 'version': 1,
+ 'formatters': {
+ 'verbose': {
+ 'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
+ }
+ },
+ 'handlers': {
+ 'stderr': {
+ 'class': 'logging.StreamHandler',
+ 'formatter': 'verbose',
+ 'level': 'DEBUG',
+ }
+ },
+ 'loggers': {
+ RECLASS_LOGGER: {
+ 'handlers': ['stderr'],
+ 'level': LOG_LEVEL,
+ }
+ }
+}
+
+
+logging.config.dictConfig(LOGGING_CONFIG)
+logger = logging.getLogger(RECLASS_LOGGER)
+logger.debug('Enabling debug log messages')