# Logging configuration [loggers] keys = root, wsgi, app, views, lib, model, sqlalchemy, scheduler, werkzeug, gunicorn [handlers] keys = console, accesslog [formatters] keys = generic, colored, accesslog [logger_root] level = DEBUG handlers = console [logger_gunicorn] level = DEBUG handlers = accesslog qualname = gunicorn propagate = 0 [logger_werkzeug] level = INFO handlers = accesslog qualname = werkzeug propagate = 0 [logger_wsgi] level = DEBUG handlers = console qualname = wsgi propagate = 0 [logger_app] level = DEBUG handlers = console qualname = app propagate = 0 [logger_views] level = DEBUG handlers = console qualname = app.views propagate = 0 [logger_lib] level = DEBUG handlers = console qualname = app.lib propagate = 0 [logger_model] level = DEBUG handlers = console qualname = app.models propagate = 0 [logger_sqlalchemy] level = WARN handlers = console qualname = sqlalchemy.engine.Engine propagate = 0 ; qualname = sqlalchemy.engine.Engine # "level = INFO" logs SQL queries. # "level = DEBUG" logs SQL queries and results. # "level = WARN" logs neither. (Recommended for production systems.) [logger_scheduler] level = WARN handlers = console qualname = app.scheduler, apscheduler propagate = 0 [handler_console] class = StreamHandler args = (sys.stderr,) level = NOTSET formatter = colored ; formatter = generic [handler_accesslog] class = StreamHandler args = (sys.stdout,) level = NOTSET formatter = accesslog [formatter_generic] format = %(asctime)s,%(msecs)03d %(levelname)-7.7s [%(name)s/%(filename)s:%(lineno)d]: %(message)s datefmt = %Y-%m-%d %H:%M:%S [formatter_colored] format = %(asctime)s,%(msecs)03d %(levelname)-7.7s [%(name)s/%(filename)s:%(lineno)d]: %(message)s datefmt = %H:%M:%S [formatter_accesslog] format = %(name)s %(message)s