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): pass
Ancestors
- builtins.Exception
- builtins.BaseException