- One unlimited log file per session - Up to 3 session logs kept at any time - Log compressed via lzma
74 lines
2.5 KiB
Python
74 lines
2.5 KiB
Python
import logging
|
|
import logging.config as logging_dot_config
|
|
import os
|
|
|
|
from src import shared
|
|
|
|
|
|
def setup_logging():
|
|
"""Intitate the app's logging"""
|
|
|
|
is_dev = shared.PROFILE == "development"
|
|
profile_app_log_level = "DEBUG" if is_dev else "INFO"
|
|
profile_lib_log_level = "INFO" if is_dev else "WARNING"
|
|
app_log_level = os.environ.get("LOGLEVEL", profile_app_log_level).upper()
|
|
lib_log_level = os.environ.get("LIBLOGLEVEL", profile_lib_log_level).upper()
|
|
|
|
log_filename = shared.data_dir / "cartridges" / "logs" / "cartridges.log.xz"
|
|
|
|
config = {
|
|
"version": 1,
|
|
"formatters": {
|
|
"file_formatter": {
|
|
"format": "%(asctime)s | %(name)s | %(levelname)s | %(message)s"
|
|
},
|
|
"console_formatter": {
|
|
"format": "%(name)s %(levelname)s - %(message)s",
|
|
"class": "src.logging.color_log_formatter.ColorLogFormatter",
|
|
},
|
|
},
|
|
"handlers": {
|
|
"file_handler": {
|
|
"class": "src.logging.session_file_handler.SessionFileHandler",
|
|
"formatter": "file_formatter",
|
|
"level": "DEBUG",
|
|
"filename": log_filename,
|
|
"backup_count": 2,
|
|
},
|
|
"app_console_handler": {
|
|
"class": "logging.StreamHandler",
|
|
"formatter": "console_formatter",
|
|
"level": app_log_level,
|
|
},
|
|
"lib_console_handler": {
|
|
"class": "logging.StreamHandler",
|
|
"formatter": "console_formatter",
|
|
"level": lib_log_level,
|
|
},
|
|
},
|
|
"loggers": {
|
|
"PIL": {
|
|
"handlers": ["lib_console_handler", "file_handler"],
|
|
"propagate": False,
|
|
"level": "NOTSET",
|
|
},
|
|
"urllib3": {
|
|
"handlers": ["lib_console_handler", "file_handler"],
|
|
"propagate": False,
|
|
"level": "NOTSET",
|
|
},
|
|
},
|
|
"root": {
|
|
"level": "NOTSET",
|
|
"handlers": ["app_console_handler", "file_handler"],
|
|
},
|
|
}
|
|
logging_dot_config.dictConfig(config)
|
|
|
|
# Inform of the logging behaviour
|
|
logging.info("Logging profile: %s", shared.PROFILE)
|
|
logging.info("Console logging level for application: %s", app_log_level)
|
|
logging.info("Console logging level for libraries: %s", lib_log_level)
|
|
logging.info("Use env vars LOGLEVEL, LIBLOGLEVEL to override")
|
|
logging.info("All message levels are written to the log file")
|