diff options
Diffstat (limited to 'cloudinit/log.py')
-rw-r--r-- | cloudinit/log.py | 44 |
1 files changed, 26 insertions, 18 deletions
diff --git a/cloudinit/log.py b/cloudinit/log.py index 5fcb77ef..478946f8 100644 --- a/cloudinit/log.py +++ b/cloudinit/log.py @@ -46,24 +46,14 @@ DEF_CON_FORMAT = '%(asctime)s - %(filename)s[%(levelname)s]: %(message)s' def setupBasicLogging(): root = logging.getLogger() - # Warnings go to the console console = logging.StreamHandler(sys.stderr) console.setFormatter(logging.Formatter(DEF_CON_FORMAT)) - console.setLevel(WARNING) + console.setLevel(DEBUG) root.addHandler(console) - # Everything else goes to this file (if we can) - try: - cfile = logging.FileHandler('/var/log/cloud-init.log') - cfile.setFormatter(logging.Formatter(DEF_CON_FORMAT)) - cfile.setLevel(DEBUG) - root.addHandler(cfile) - except (IOError, OSError): - # Likely that u can't write to that file... - # Make console now have DEBUG?? - console.setLevel(DEBUG) root.setLevel(DEBUG) + def setupLogging(cfg=None): # See if the config provides any logging conf... if not cfg: @@ -86,7 +76,7 @@ def setupLogging(cfg=None): # See if any of them actually load... am_tried = 0 am_worked = 0 - for log_cfg in log_cfgs: + for i, log_cfg in enumerate(log_cfgs): try: am_tried += 1 # Assume its just a string if not a filename @@ -97,13 +87,14 @@ def setupLogging(cfg=None): # Attempt to load its config logging.config.fileConfig(log_cfg) am_worked += 1 - except Exception: - pass + except Exception as e: + sys.stderr.write(("WARN: Setup of logging config %s" + " failed due to: %s\n") % (i + 1, e)) # If it didn't work, at least setup a basic logger (if desired) basic_enabled = cfg.get('log_basic', True) if not am_worked: - sys.stderr.write(("Warning, no logging configured!" + sys.stderr.write(("WARN: no logging configured!" " (tried %s configs)\n") % (am_tried)) if basic_enabled: sys.stderr.write("Setting up basic logging...\n") @@ -123,5 +114,22 @@ except ImportError: def emit(self, record): pass -logger = logging.getLogger() -logger.addHandler(NullHandler()) + +def _resetLogger(log): + if not log: + return + handlers = list(log.handlers) + for h in handlers: + h.flush() + h.close() + log.removeHandler(h) + log.setLevel(NOTSET) + log.addHandler(NullHandler()) + + +def resetLogging(): + _resetLogger(logging.getLogger()) + _resetLogger(getLogger()) + + +resetLogging() |