diff options
| author | 2021-03-06 12:08:07 +0000 | |
|---|---|---|
| committer | 2021-03-06 12:08:07 +0000 | |
| commit | fd7a693a4ed4268ab4823142c21e9c85973a3d4f (patch) | |
| tree | 0dcd456f5987fb687737b2fb92faa61d0962e7a0 | |
| parent | Add JSON logging dependencies (diff) | |
Use JSON logging when debug mode is disabled
| -rw-r--r-- | bot/log.py | 49 |
1 files changed, 33 insertions, 16 deletions
diff --git a/bot/log.py b/bot/log.py index e92233a33..bc3bba0af 100644 --- a/bot/log.py +++ b/bot/log.py @@ -1,11 +1,12 @@ import logging import os import sys -from logging import Logger, handlers +from logging import Logger, StreamHandler, handlers from pathlib import Path import coloredlogs import sentry_sdk +from pythonjsonlogger import jsonlogger from sentry_sdk.integrations.logging import LoggingIntegration from sentry_sdk.integrations.redis import RedisIntegration @@ -13,6 +14,15 @@ from bot import constants TRACE_LEVEL = 5 +PROD_FIELDS = [ + "asctime", + "name", + "levelname", + "message", + "funcName", + "filename" +] + def setup() -> None: """Set up loggers.""" @@ -33,21 +43,28 @@ def setup() -> None: root_log.setLevel(log_level) root_log.addHandler(file_handler) - if "COLOREDLOGS_LEVEL_STYLES" not in os.environ: - coloredlogs.DEFAULT_LEVEL_STYLES = { - **coloredlogs.DEFAULT_LEVEL_STYLES, - "trace": {"color": 246}, - "critical": {"background": "red"}, - "debug": coloredlogs.DEFAULT_LEVEL_STYLES["info"] - } - - if "COLOREDLOGS_LOG_FORMAT" not in os.environ: - coloredlogs.DEFAULT_LOG_FORMAT = format_string - - if "COLOREDLOGS_LOG_LEVEL" not in os.environ: - coloredlogs.DEFAULT_LOG_LEVEL = log_level - - coloredlogs.install(logger=root_log, stream=sys.stdout) + if constants.DEBUG_MODE: + if "COLOREDLOGS_LEVEL_STYLES" not in os.environ: + coloredlogs.DEFAULT_LEVEL_STYLES = { + **coloredlogs.DEFAULT_LEVEL_STYLES, + "trace": {"color": 246}, + "critical": {"background": "red"}, + "debug": coloredlogs.DEFAULT_LEVEL_STYLES["info"] + } + + if "COLOREDLOGS_LOG_FORMAT" not in os.environ: + coloredlogs.DEFAULT_LOG_FORMAT = format_string + + if "COLOREDLOGS_LOG_LEVEL" not in os.environ: + coloredlogs.DEFAULT_LOG_LEVEL = log_level + + coloredlogs.install(logger=root_log, stream=sys.stdout) + else: + json_format = " ".join([f"%({field})s" for field in PROD_FIELDS]) + stream_handler = StreamHandler() + formatter = jsonlogger.JsonFormatter(json_format) + stream_handler.setFormatter(formatter) + root_log.addHandler(stream_handler) logging.getLogger("discord").setLevel(logging.WARNING) logging.getLogger("websockets").setLevel(logging.WARNING) |