aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bot/log.py49
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)