# core/melding.py
#
#
""" provide logging infrastructure. """
__copyright__ = "Copyright 2015, B.H.J Thate"
## IMPORTS
from core.defines import BOLD, BLA, BLUE, RED, GREEN, YELLOW, ENDC
from core.utils.file import cdir
from core.utils.join import j
from core.errors import error
import logging.handlers
import logging
import os
## DEFINES
homedir = os.path.expanduser("~")
logdir = j(homedir, "core.logs", "")
enabled = False
datefmt = '%H:%M:%S'
format = "%(asctime)-8s %(message)s %(module)s.%(lineno)s"
format_small = "%(asctime)-8s %(message)s"
LEVELS = {'debug': logging.DEBUG,
'info': logging.INFO,
'warning': logging.WARNING,
'warn': logging.WARNING,
'error': logging.ERROR,
'critical': logging.CRITICAL
}
## CLASSES
[docs]def log(level, error):
l = LEVELS.get(str(level).lower(), logging.NOTSET)
logging.log(l, error)
## INIT
[docs]def init(loglevel, colors=True):
""" return a properly configured logger. """
logger = logging.getLogger("")
formatter_clean = FormatterClean(format_small, datefmt=datefmt)
formatter_short = Formatter(format_small, datefmt=datefmt)
level = LEVELS.get(str(loglevel).lower(), logging.NOTSET)
filehandler = None
logger.setLevel(level)
if logger.handlers:
for handler in logger.handlers: logger.removeHandler(handler)
if not os.path.exists(logdir): cdir(logdir)
try: filehandler = logging.handlers.TimedRotatingFileHandler(j(logdir, "core.log"), 'midnight')
except: error()
ch = logging.StreamHandler()
ch.setLevel(level)
if colors: ch.setFormatter(formatter_short)
else: ch.setFormatter(formatter_clean)
logger.addHandler(ch)
if filehandler:
if colors: ch.setFormatter(formatter_short)
else: ch.setFormatter(formatter_clean)
filehandler.setLevel(level)
logger.addHandler(filehandler)
global enabled
enabled = True
return logger