class BasicLogger(object): def __init__(self, loglevel=LOG_DEBUG, servicename='fshttpstream'): self.loglevel = loglevel h = logging.StreamHandler() h.setLevel(loglevel) fmt = logging.Formatter("%(asctime)s " + servicename + "[%(process)d]: %(levelname)s: %(message)s") h.setFormatter(fmt) self._logger = RootLogger(loglevel) self._logger.addHandler(h) def set_debug(self): self.loglevel = LOG_DEBUG self._logger.setLevel(self.loglevel) def set_info(self): self.loglevel = LOG_INFO self._logger.setLevel(self.loglevel) def info(self, msg): self._logger.info(str(msg)) def debug(self, msg): self._logger.debug(str(msg)) def warn(self, msg): self._logger.warn(str(msg)) def error(self, msg): self._logger.error(str(msg)) def write(self, msg): self.info(msg)
class StdoutLogger(object): def __init__(self, log_level=INFO): hdlr = StreamHandler() hdlr.setLevel(log_level) hdlr.setFormatter(JSONFormatter) self._logger = RootLogger(log_level) self._logger.addHandler(hdlr=hdlr) def debug(self, msg, extra=None): extra = {} if not extra else extra self._logger.debug(msg, extra=extra) def info(self, msg, extra=None): extra = {} if not extra else extra self._logger.info(msg, extra=extra) def warning(self, msg, extra=None): extra = {} if not extra else extra self._logger.warning(msg, extra=extra) def error(self, msg, extra=None): extra = {} if not extra else extra self._logger.error(msg, extra=extra) def fatal(self, msg, extra=None): extra = {} if not extra else extra self._logger.fatal(msg, extra=extra)
class StdoutLogger(object): def __init__(self, loglevel=LOG_DEBUG, servicename=__default_servicename__): self.loglevel = loglevel h = logging.StreamHandler() h.setLevel(loglevel) fmt = logging.Formatter("%(asctime)s " + servicename + "[%(process)d]: %(levelname)s: %(message)s") h.setFormatter(fmt) self._logger = RootLogger(loglevel) self._logger.addHandler(h) def set_debug(self): self.loglevel = LOG_DEBUG self._logger.setLevel(self.loglevel) def set_info(self): self.loglevel = LOG_INFO self._logger.setLevel(self.loglevel) def info(self, msg): self._logger.info(str(msg)) def debug(self, msg): self._logger.debug(str(msg)) def warn(self, msg): self._logger.warn(str(msg)) def error(self, msg): self._logger.error(str(msg)) def write(self, msg): self.info(msg)
class FileLogger(BasicLogger): def __init__(self, logfile='/tmp/fshttpstream.log', loglevel=LOG_DEBUG, servicename="fshttpstream"): h = logging.FileHandler(filename=logfile) h.setLevel(loglevel) fmt = logging.Formatter("%(asctime)s "+servicename+"[%(process)d]: %(levelname)s: %(message)s") h.setFormatter(fmt) self._logger = RootLogger(loglevel) self._logger.addHandler(h)
class FileLogger(StdoutLogger): def __init__(self, logfile='/tmp/%s.log' % __default_servicename__, \ loglevel=LOG_DEBUG, servicename=__default_servicename__): h = logging.FileHandler(filename=logfile) h.setLevel(loglevel) fmt = logging.Formatter("%(asctime)s "+servicename+"[%(process)d]: %(levelname)s: %(message)s") h.setFormatter(fmt) self._logger = RootLogger(loglevel) self._logger.addHandler(h)
class SysLogger(BasicLogger): def __init__(self, addr='/dev/log', syslogfacility="local0", loglevel=LOG_DEBUG, servicename="fshttpstream"): fac = Syslog.facility_names[syslogfacility] h = Syslog(address=addr, facility=fac) h.setLevel(loglevel) fmt = logging.Formatter(servicename+"[%(process)d]: %(levelname)s: %(message)s") h.setFormatter(fmt) self._logger = RootLogger(loglevel) self._logger.addHandler(h)
class FileLogger(StdoutLogger): def __init__(self, logfile='/tmp/%s.log' % __default_servicename__, \ loglevel=LOG_DEBUG, servicename=__default_servicename__): h = logging.handlers.RotatingFileHandler(filename=logfile, mode='a', maxBytes=104857600, backupCount=100) h.setLevel(loglevel) fmt = logging.Formatter("%(asctime)s "+servicename+"[%(process)d]: %(levelname)s: %(message)s") h.setFormatter(fmt) self._logger = RootLogger(loglevel) self._logger.addHandler(h)
class FileLogger(BasicLogger): def __init__(self, logfile='/tmp/fshttpstream.log', loglevel=LOG_DEBUG, servicename="fshttpstream"): h = logging.FileHandler(filename=logfile) h.setLevel(loglevel) fmt = logging.Formatter("%(asctime)s " + servicename + "[%(process)d]: %(levelname)s: %(message)s") h.setFormatter(fmt) self._logger = RootLogger(loglevel) self._logger.addHandler(h)
class SysLogger(StdoutLogger): def __init__(self, addr='/dev/log', syslogfacility="local0", \ loglevel=LOG_DEBUG, servicename=__default_servicename__): if ':' in addr: host, port = addr.split(':', 1) port = int(port) addr = (host, port) fac = Syslog.facility_names[syslogfacility] h = Syslog(address=addr, facility=fac) h.setLevel(loglevel) fmt = logging.Formatter(servicename+"[%(process)d]: %(levelname)s: %(message)s") h.setFormatter(fmt) self._logger = RootLogger(loglevel) self._logger.addHandler(h)
class SysLogger(BasicLogger): def __init__(self, addr='/dev/log', syslogfacility="local0", loglevel=LOG_DEBUG, servicename="fshttpstream"): fac = Syslog.facility_names[syslogfacility] h = Syslog(address=addr, facility=fac) h.setLevel(loglevel) fmt = logging.Formatter(servicename + "[%(process)d]: %(levelname)s: %(message)s") h.setFormatter(fmt) self._logger = RootLogger(loglevel) self._logger.addHandler(h)
class StdoutLogger(object): def __init__(self, loglevel=LOG_DEBUG, servicename=__default_servicename__): self.loglevel = loglevel h = logging.StreamHandler() h.setLevel(loglevel) fmt = logging.Formatter("%(asctime)s " + servicename + "[%(process)d]: %(levelname)s: %(message)s") h.setFormatter(fmt) self._logger = RootLogger(loglevel) self._logger.addHandler(h) def set_debug(self): self.loglevel = LOG_DEBUG self._logger.setLevel(self.loglevel) def set_info(self): self.loglevel = LOG_INFO self._logger.setLevel(self.loglevel) def set_error(self): self.loglevel = LOG_ERROR self._logger.setLevel(self.loglevel) def set_warn(self): self.loglevel = LOG_WARN self._logger.setLevel(self.loglevel) def info(self, msg): self._logger.info(safe_str(msg)) self.hook(msg, 'info') def debug(self, msg): self._logger.debug(safe_str(msg)) self.hook(msg, 'debug') def warn(self, msg): self._logger.warn(safe_str(msg)) self.hook(msg, 'warn') def error(self, msg): self._logger.error(safe_str(msg)) self.hook(msg, 'error') def write(self, msg): self.info(msg) def hook(self, msg, levelname): pass
class HTTPLogger(object): def __init__(self, url, method='POST', fallback_file=None, loglevel=LOG_DEBUG, servicename=__default_servicename__): import urlparse self.loglevel = loglevel self.fallback_file = fallback_file p = urlparse.urlparse(url) netloc = p.netloc urlpath = p.path if p.query: urlpath += '?' + query h = HTTPHandler(host=netloc, url=urlpath, method=method) h.setLevel(loglevel) fmt = logging.Formatter(servicename+"[%(process)d]: %(levelname)s: %(message)s") h.setFormatter(fmt) self._logger = RootLogger(loglevel) self._logger.addHandler(h) if self.fallback_file: self._fallback = FileLogger(logfile=self.fallback_file, loglevel=self.loglevel, servicename=servicename) else: self._fallback = DummyLogger() def set_debug(self): self.loglevel = LOG_DEBUG self._logger.setLevel(self.loglevel) self._fallback.set_debug() def set_info(self): self.loglevel = LOG_INFO self._logger.setLevel(self.loglevel) self._fallback.set_info() def set_error(self): self.loglevel = LOG_ERROR self._logger.setLevel(self.loglevel) self._fallback.set_error() def set_warn(self): self.loglevel = LOG_WARN self._logger.setLevel(self.loglevel) self._fallback.set_warn() def info(self, msg): try: self._logger.info(safe_str(msg)) except: self._fallback.info(safe_str(msg)) def debug(self, msg): try: self._logger.debug(safe_str(msg)) except: self._fallback.debug(safe_str(msg)) def warn(self, msg): try: self._logger.warn(safe_str(msg)) except: self._fallback.warn(safe_str(msg)) def error(self, msg): try: self._logger.error(safe_str(msg)) except: self._fallback.error(safe_str(msg)) def write(self, msg): try: self.info(msg) except: self._fallback.info(safe_str(msg))
class HTTPLogger(object): def __init__(self, url, method='POST', fallback_file=None, loglevel=LOG_DEBUG, servicename=__default_servicename__): import urlparse self.loglevel = loglevel self.fallback_file = fallback_file p = urlparse.urlparse(url) netloc = p.netloc urlpath = p.path if p.query: urlpath += '?' + query h = HTTPHandler(host=netloc, url=urlpath, method=method) h.setLevel(loglevel) fmt = logging.Formatter(servicename + "[%(process)d]: %(levelname)s: %(message)s") h.setFormatter(fmt) self._logger = RootLogger(loglevel) self._logger.addHandler(h) if self.fallback_file: self._fallback = FileLogger(logfile=self.fallback_file, loglevel=self.loglevel, servicename=servicename) else: self._fallback = DummyLogger() def set_debug(self): self.loglevel = LOG_DEBUG self._logger.setLevel(self.loglevel) self._fallback.set_debug() def set_info(self): self.loglevel = LOG_INFO self._logger.setLevel(self.loglevel) self._fallback.set_info() def set_error(self): self.loglevel = LOG_ERROR self._logger.setLevel(self.loglevel) self._fallback.set_error() def set_warn(self): self.loglevel = LOG_WARN self._logger.setLevel(self.loglevel) self._fallback.set_warn() def info(self, msg): try: self._logger.info(safe_str(msg)) except: self._fallback.info(safe_str(msg)) def debug(self, msg): try: self._logger.debug(safe_str(msg)) except: self._fallback.debug(safe_str(msg)) def warn(self, msg): try: self._logger.warn(safe_str(msg)) except: self._fallback.warn(safe_str(msg)) def error(self, msg): try: self._logger.error(safe_str(msg)) except: self._fallback.error(safe_str(msg)) def write(self, msg): try: self.info(msg) except: self._fallback.info(safe_str(msg))