diff options
| -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)  |