Changes:
- Change context: kamaki-image-addproperty --> kamaki-image-compute-property
-- http logger names are modified: clients.recv/send --> kamaki.clients.recv/send
+- http logger names: clients.recv/send --> kamaki.clients.recv/send
+- Move logger creation and control (except of the actuall logging) to cli
Features:
-- A logger module container a set of basic loging method for kamaki:
+- A logger module container a set of basic loging method for kamaki [#3668]
set/get_log_filename, add_file/strean_logger, get_logger
- (#3668)
+- Implement logger.activate/deactivate for loggers [#3715]
from kamaki.cli.history import History
from kamaki.cli.utils import print_dict, red, magenta, yellow
from kamaki.cli.errors import CLIError
-from kamaki.logger import add_stream_logger, get_logger
+from kamaki import logger
_help = False
_debug = False
_verbose = False
_colors = False
kloger = None
+filelog = None
# command auxiliary methods
"""handle logging for clients package"""
if silent:
- add_stream_logger(__name__, logging.CRITICAL)
+ logger.add_stream_logger(__name__, logging.CRITICAL)
return
sfmt, rfmt = '> %(message)s', '< %(message)s'
if debug:
- add_stream_logger('kamaki.clients.send', logging.DEBUG, sfmt)
- add_stream_logger('kamaki.clients.recv', logging.DEBUG, rfmt)
- add_stream_logger(__name__, logging.DEBUG)
+ print('Logging location: %s' % logger.get_log_filename())
+ logger.add_stream_logger('kamaki.clients.send', logging.DEBUG, sfmt)
+ logger.add_stream_logger('kamaki.clients.recv', logging.DEBUG, rfmt)
+ logger.add_stream_logger(__name__, logging.DEBUG)
elif verbose:
- add_stream_logger('kamaki.clients.send', logging.INFO, sfmt)
- add_stream_logger('kamaki.clients.recv', logging.INFO, rfmt)
- add_stream_logger(__name__, logging.INFO)
+ logger.add_stream_logger('kamaki.clients.send', logging.INFO, sfmt)
+ logger.add_stream_logger('kamaki.clients.recv', logging.INFO, rfmt)
+ logger.add_stream_logger(__name__, logging.INFO)
if include:
- add_stream_logger('kamaki.clients.send', logging.INFO, sfmt)
- add_stream_logger('kamaki.clients.recv', logging.INFO, rfmt)
- add_stream_logger(__name__, logging.WARNING)
+ logger.add_stream_logger('kamaki.clients.send', logging.INFO, sfmt)
+ logger.add_stream_logger('kamaki.clients.recv', logging.INFO, rfmt)
+ logger.add_stream_logger(__name__, logging.WARNING)
global kloger
- kloger = get_logger(__name__)
+ kloger = logger.get_logger(__name__)
def _init_session(arguments):
from kamaki.logger import set_log_filename
set_log_filename(log_file)
+ global filelog
+ filelog = logger.add_file_logger(__name__.split('.')[0])
+ filelog.info('Logging location: %s' % logger.get_log_filename())
+
_init_session(parser.arguments)
from kamaki.cli.utils import suggest_missing
from objpool.http import PooledHTTPConnection
-from kamaki.logger import add_file_logger, get_log_filename, get_logger
+from kamaki.logger import get_logger
+
TIMEOUT = 60.0 # seconds
HTTP_METHODS = ['GET', 'POST', 'PUT', 'HEAD', 'DELETE', 'COPY', 'MOVE']
-log = add_file_logger(__name__)
-log.debug('Logging location: %s' % get_log_filename())
+log = get_logger(__name__)
sendlog = get_logger('%s.send' % __name__)
recvlog = get_logger('%s.recv' % __name__)
LOG_FILE = [expanduser('~/.kamaki.log')]
+ALL = 0
+
+_blacklist = {}
+
+
+def deactivate(name):
+ """Deactivate a logger. Can be restored"""
+ xlogger = logging.getLogger(name)
+ _blacklist[name] = xlogger.level
+ xlogger.setLevel(logging.CRITICAL)
+
+
+def activate(name):
+ """Restore a loggers settings"""
+ old_logger = logging.getLogger(name)
+ old_logger.setLevel(_blacklist.pop(name, old_logger.level))
+
+
+def if_logger_enabled(foo):
+ def wrap(name, *args, **kwargs):
+ if name in _blacklist:
+ return logging.getLogger(name)
+ return foo(name, *args, **kwargs)
+ return wrap
def get_log_filename():
def set_log_filename(filename):
global LOG_FILE
- LOG_FILE = [filename] + LOG_FILE
+ LOG_FILE[0] = filename
def _add_logger(name, level=None, filename=None, fmt=None):
return log
+@if_logger_enabled
def add_file_logger(name, level=None, filename=None):
try:
return _add_logger(
return get_logger(name)
+@if_logger_enabled
def add_stream_logger(name, level=None, fmt=None):
try:
return _add_logger(name, level, fmt=fmt)
return get_logger(name)
+@if_logger_enabled
def get_logger(name):
return logging.getLogger(name)