def logsetup(app): global _setup_done if _setup_done: return _setup_done = True @app.before_request def log_before_request(): g.request_start_time = time.time() g.request_log_level = 2 if app.config.get("log_request", True): @app.after_request def log_after_request(response): log_level = getattr(g, 'request_log_level', 2) if log_level == 0: return resp_text = "" resp_len = -1 try: resp_len = len(response.response[0]) resp_text = response.response[0][:192] except: pass t = None if hasattr(g, 'request_start_time'): t = float("%.3f" % (time.time() - g.request_start_time)) extra = { "response_code": response.status_code, "response_length": resp_len, "response_time": t, "log_level": log_level, } if response.status_code >= 400: extra["response"] = resp_text if hasattr(g, "database"): extra["database"] = g.database logging.getLogger("request").info("{} {} - {}".format( request.method, request.url, response.status_code), extra=extra) return response logging.setLoggerClass(ContextAwareLogger) syslog_path = '/dev/log' if sys.platform == 'darwin': syslog_path = '/var/run/syslog' elif sys.platform == 'win32': syslog_path = ('localhost', 514) # Install log file handler handler = SysLogHandler(address=syslog_path, facility=SysLogHandler.LOG_USER) handler.name = "serverlog" handler.setFormatter(ServerLogFormatter()) logging.root.addHandler(handler) # Install eventLog file handler handler = SysLogHandler(address=syslog_path, facility=SysLogHandler.LOG_LOCAL0) handler.name = "eventlog" handler.setFormatter(EventLogFormatter()) l = logging.getLogger("eventlog") l.propagate = False l.setLevel('INFO') l.addHandler(handler) # Install client file handler handler = SysLogHandler(address=syslog_path, facility=SysLogHandler.LOG_LOCAL1) handler.name = "clientlog" handler.setFormatter(ClientLogFormatter()) l = logging.getLogger("clientlog") l.propagate = False l.setLevel('INFO') l.addHandler(handler) # request handler handler = SysLogHandler(address=syslog_path, facility=SysLogHandler.LOG_LOCAL2) handler.name = "request" handler.setFormatter(RequestLogFormatter()) l = logging.getLogger("request") l.propagate = False l.addHandler(handler) # Quiet down copule of very chatty loggers. This can be overridden in config.json. for logger_name in [ 'sqlalchemy', 'werkzeug', 'requests.packages.urllib3.connectionpool' ]: logging.getLogger(logger_name).setLevel('WARNING') # Apply additional 'level' and 'propagate' settings for handlers and # loggers. See https://docs.python.org/2.7/library/logging.config.html# # Example format: # "logging": { # "version": 1, # "incremental": true, # "loggers": { # "my_chatty_logger": { # "level": "WARNING" # } # }, # "handlers": { # "serverlog": { # "level": "INFO", # } # } # } if 'logging' in app.config: logging.config.dictConfig(app.config['logging'])
def logsetup(app): global _setup_done if _setup_done: return _setup_done = True logging.setLoggerClass(ContextAwareLogger) syslog_path = '/dev/log' if sys.platform == 'darwin': syslog_path = '/var/run/syslog' # Install log file handler handler = SysLogHandler(address=syslog_path, facility=SysLogHandler.LOG_USER) handler.name = "serverlog" handler.setFormatter(ServerLogFormatter()) logging.root.addHandler(handler) # Install eventLog file handler handler = SysLogHandler(address=syslog_path, facility=SysLogHandler.LOG_LOCAL0) handler.name = "eventlog" handler.setFormatter(EventLogFormatter()) l = logging.getLogger("eventlog") l.propagate = False l.addHandler(handler) # Install client file handler handler = SysLogHandler(address=syslog_path, facility=SysLogHandler.LOG_LOCAL1) handler.name = "clientlog" handler.setFormatter(ClientLogFormatter()) l = logging.getLogger("clientlog") l.propagate = False l.addHandler(handler) # Quiet down copule of very chatty loggers. This can be overridden in config.json. for logger_name in [ 'sqlalchemy', 'werkzeug', 'requests.packages.urllib3.connectionpool' ]: logging.getLogger(logger_name).setLevel('WARNING') # Apply additional 'level' and 'propagate' settings for handlers and # loggers. See https://docs.python.org/2.7/library/logging.config.html# # Example format: # "logging": { # "version": 1, # "incremental": true, # "loggers": { # "my_chatty_logger": { # "level": "WARNING" # } # }, # "handlers": { # "serverlog": { # "level": "INFO", # } # } # } if 'logging' in app.config: logging.config.dictConfig(app.config['logging'])