Module smartapp.logger
Expand source code
import sys
import logging
import inspect
from logging import INFO, WARN, ERROR, DEBUG
FORMAT = '[%(asctime)s] [%(levelname)s] [%(name)s] [%(item)s:%(lineno)d] %(message)s'
DATE_FMT = '%Y-%m-%d %H:%M:%S %z'
class LoggerError(Exception):
pass
class Logger(object):
instance = None
def __init__(self, item):
self.item = item
def xtra(self):
return {'item': self.item}
def info(self, *args):
self.__class__.instance.info(*args, extra=self.xtra())
def warn(self, *args):
self.__class__.instance.warn(*args, extra=self.xtra())
def error(self, *args):
self.__class__.instance.error(*args, extra=self.xtra())
def debug(self, *args):
self.__class__.instance.debug(*args, extra=self.xtra())
def init(service, level=INFO):
if Logger.instance:
raise LoggerError('logger can only be initialized once')
logger = logging.getLogger(service)
sh = logging.StreamHandler(sys.stdout)
sh.setFormatter(logging.Formatter(fmt=FORMAT, datefmt=DATE_FMT))
logger.addHandler(sh)
logger.setLevel(level)
Logger.instance = logger
def get():
if not Logger.instance:
raise LoggerError('logger must be initialized first')
return Logger(inspect.getmodule(inspect.stack()[1][0]).__name__)
Functions
def get()-
Expand source code
def get(): if not Logger.instance: raise LoggerError('logger must be initialized first') return Logger(inspect.getmodule(inspect.stack()[1][0]).__name__) def init(service, level=20)-
Expand source code
def init(service, level=INFO): if Logger.instance: raise LoggerError('logger can only be initialized once') logger = logging.getLogger(service) sh = logging.StreamHandler(sys.stdout) sh.setFormatter(logging.Formatter(fmt=FORMAT, datefmt=DATE_FMT)) logger.addHandler(sh) logger.setLevel(level) Logger.instance = logger
Classes
class Logger (item)-
Expand source code
class Logger(object): instance = None def __init__(self, item): self.item = item def xtra(self): return {'item': self.item} def info(self, *args): self.__class__.instance.info(*args, extra=self.xtra()) def warn(self, *args): self.__class__.instance.warn(*args, extra=self.xtra()) def error(self, *args): self.__class__.instance.error(*args, extra=self.xtra()) def debug(self, *args): self.__class__.instance.debug(*args, extra=self.xtra())Class variables
var instance
Methods
def debug(self, *args)-
Expand source code
def debug(self, *args): self.__class__.instance.debug(*args, extra=self.xtra()) def error(self, *args)-
Expand source code
def error(self, *args): self.__class__.instance.error(*args, extra=self.xtra()) def info(self, *args)-
Expand source code
def info(self, *args): self.__class__.instance.info(*args, extra=self.xtra()) def warn(self, *args)-
Expand source code
def warn(self, *args): self.__class__.instance.warn(*args, extra=self.xtra()) def xtra(self)-
Expand source code
def xtra(self): return {'item': self.item}
class LoggerError (*args, **kwargs)-
Common base class for all non-exit exceptions.
Expand source code
class LoggerError(Exception): passAncestors
- builtins.Exception
- builtins.BaseException