Source code for env.clogging
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from __future__ import print_function, division, unicode_literals, absolute_import
import logging
import six
logdir = "."
formatter = None
class MyFormatter(logging.Formatter):
def format(self, record):
record.levelname = record.levelname.lower()
return logging.Formatter.format(self, record)
def log_l():
global formatter
logger = logging.getLogger('')
# create formatter
formatter = MyFormatter('%(levelname)-8s : %(message)s') # logging.Formatter
return logger
def log_e():
global formatter
logger = logging.getLogger('')
# create formatter
formatter = MyFormatter(
'[%(funcName)-10.10s : %(filename)-10s, L. %(lineno)-4d] : %(levelname)-8s : %(message)s') # logging.Formatter
return logger
clogger = log_l()
[docs]def clog(level=None):
"""
Sets the verbosity level for CliMAF log messages on stderr.
Args:
level(str) : among : \"debug\", \"info\", \"warning\", \"critical\"
Note : at CliMAF startup, the level is set to the value of environment variable $CLIMAF_LOG_LEVEL
"""
if level:
clogger.setLevel(transl(level))
exist_stream_handler = False
for h in clogger.handlers:
if isinstance(h, logging.StreamHandler):
# print "il existe deja un StreamHandler => on change le niveau d informations et on formatte le msg ", h
# clogger.setLevel(arg)
h.setFormatter(formatter)
exist_stream_handler = True
if not exist_stream_handler:
# print "ajout d un StreamHandler"
console = logging.StreamHandler()
# console.setLevel(arg)
console.setFormatter(formatter)
clogger.addHandler(console)
[docs]def clog_file(level=None):
"""
Sets the verbosity level for CliMAF log messages on file CLIMAF_LOG_DIR/climaf.log
Args:
level(str) : among : \"debug\", \"info\", \"warning\", \"critical\"
Note : at CliMAF startup, the level is set to the value of environment variable $CLIMAF_LOGFILE_LEVEL
"""
exist_file_handler = False
for h in clogger.handlers:
if isinstance(h, logging.FileHandler):
# print "il existe deja un FileHandler => on change le niveau d informations", h
if level:
h.setLevel(transl(level))
h.setFormatter(formatter)
exist_file_handler = True
if not exist_file_handler:
# print "ajout d un FileHandler"
fh = logging.FileHandler(logdir + "/" + 'climaf.log', mode='w')
if level:
fh.setLevel(transl(level))
fh.setFormatter(formatter)
clogger.addHandler(fh)
def indent():
"""
Forces log messages to be indented by one more TAB
"""
global formatter
form = "\t" + getattr(formatter, '_fmt')
formatter = MyFormatter(form) # logging.Formatter(form)
clog()
clog_file()
def dedent(n=1):
"""
Forces log messages to be de-indented by one or more TAB
"""
global formatter
form = getattr(formatter, '_fmt').replace("\t", "", n)
formatter = MyFormatter(form) # logging.Formatter(form)
clog()
clog_file()
def transl(level):
if isinstance(level, six.string_types):
if level.lower() == 'debug':
return logging.DEBUG
elif level.lower() == 'critical':
return logging.CRITICAL
elif level.lower() == 'info':
return logging.INFO
elif level.lower() == 'warning':
return logging.WARNING
elif level.lower() == 'error':
return logging.ERROR
else:
raise ValueError("%s is not a log level" % level)
else:
return level