diff options
author | Scott Moser <smoser@ubuntu.com> | 2016-08-10 09:06:15 -0600 |
---|---|---|
committer | Scott Moser <smoser@ubuntu.com> | 2016-08-10 09:06:15 -0600 |
commit | c3c3dc693c14175e110b5fe125d4d5f98ace9700 (patch) | |
tree | 8858702c2c8a6ad4bf1bb861a4565e0a9c28e588 /cloudinit/log.py | |
parent | 5bd3493d732e5b1902872958e8681f17cbc81ce5 (diff) | |
download | cloud-init-trunk.tar.gz |
cloud-init development has moved its revision control to git.
It is available at
https://code.launchpad.net/cloud-init
Clone with
git clone https://git.launchpad.net/cloud-init
or
git clone git+ssh://git.launchpad.net/cloud-init
For more information see
https://git.launchpad.net/cloud-init/tree/HACKING.rst
Diffstat (limited to 'cloudinit/log.py')
-rw-r--r-- | cloudinit/log.py | 155 |
1 files changed, 0 insertions, 155 deletions
diff --git a/cloudinit/log.py b/cloudinit/log.py deleted file mode 100644 index 3c79b9c9..00000000 --- a/cloudinit/log.py +++ /dev/null @@ -1,155 +0,0 @@ -# vi: ts=4 expandtab -# -# Copyright (C) 2012 Canonical Ltd. -# Copyright (C) 2012 Hewlett-Packard Development Company, L.P. -# Copyright (C) 2012 Yahoo! Inc. -# -# Author: Scott Moser <scott.moser@canonical.com> -# Author: Juerg Haefliger <juerg.haefliger@hp.com> -# Author: Joshua Harlow <harlowja@yahoo-inc.com> -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 3, as -# published by the Free Software Foundation. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -import logging -import logging.config -import logging.handlers - -import collections -import os -import sys - -import six -from six import StringIO - -# Logging levels for easy access -CRITICAL = logging.CRITICAL -FATAL = logging.FATAL -ERROR = logging.ERROR -WARNING = logging.WARNING -WARN = logging.WARN -INFO = logging.INFO -DEBUG = logging.DEBUG -NOTSET = logging.NOTSET - -# Default basic format -DEF_CON_FORMAT = '%(asctime)s - %(filename)s[%(levelname)s]: %(message)s' - - -def setupBasicLogging(level=DEBUG): - root = logging.getLogger() - console = logging.StreamHandler(sys.stderr) - console.setFormatter(logging.Formatter(DEF_CON_FORMAT)) - console.setLevel(level) - root.addHandler(console) - root.setLevel(level) - - -def flushLoggers(root): - if not root: - return - for h in root.handlers: - if isinstance(h, (logging.StreamHandler)): - try: - h.flush() - except IOError: - pass - flushLoggers(root.parent) - - -def setupLogging(cfg=None): - # See if the config provides any logging conf... - if not cfg: - cfg = {} - - log_cfgs = [] - log_cfg = cfg.get('logcfg') - if log_cfg and isinstance(log_cfg, six.string_types): - # If there is a 'logcfg' entry in the config, - # respect it, it is the old keyname - log_cfgs.append(str(log_cfg)) - elif "log_cfgs" in cfg: - for a_cfg in cfg['log_cfgs']: - if isinstance(a_cfg, six.string_types): - log_cfgs.append(a_cfg) - elif isinstance(a_cfg, (collections.Iterable)): - cfg_str = [str(c) for c in a_cfg] - log_cfgs.append('\n'.join(cfg_str)) - else: - log_cfgs.append(str(a_cfg)) - - # See if any of them actually load... - am_tried = 0 - for log_cfg in log_cfgs: - try: - am_tried += 1 - # Assume its just a string if not a filename - if log_cfg.startswith("/") and os.path.isfile(log_cfg): - # Leave it as a file and do not make it look like - # something that is a file (but is really a buffer that - # is acting as a file) - pass - else: - log_cfg = StringIO(log_cfg) - # Attempt to load its config - logging.config.fileConfig(log_cfg) - # The first one to work wins! - return - except Exception: - # We do not write any logs of this here, because the default - # configuration includes an attempt at using /dev/log, followed - # up by writing to a file. /dev/log will not exist in very early - # boot, so an exception on that is expected. - pass - - # If it didn't work, at least setup a basic logger (if desired) - basic_enabled = cfg.get('log_basic', True) - - sys.stderr.write(("WARN: no logging configured!" - " (tried %s configs)\n") % (am_tried)) - if basic_enabled: - sys.stderr.write("Setting up basic logging...\n") - setupBasicLogging() - - -def getLogger(name='cloudinit'): - return logging.getLogger(name) - - -# Fixes this annoyance... -# No handlers could be found for logger XXX annoying output... -try: - from logging import NullHandler -except ImportError: - class NullHandler(logging.Handler): - def emit(self, record): - pass - - -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() |