Skip to content

Commit 4c3fff3

Browse files
committed
chore: add color to jormungandr logs by default
1 parent 7de1ef4 commit 4c3fff3

2 files changed

Lines changed: 31 additions & 5 deletions

File tree

‎source/jormungandr/jormungandr/default_settings.py‎

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import json
66
from flask_restful.inputs import boolean
77
from datetime import timedelta
8+
import logging
89

910
# sql queries will return an exception if the query did not succeed before `statement_timeout`
1011
DEFAULT_SQLALCHEMY_ENGINE_OPTIONS = {
@@ -51,28 +52,28 @@
5152
log_level = os.getenv('JORMUNGANDR_LOG_LEVEL', 'DEBUG')
5253
log_format = os.getenv(
5354
'JORMUNGANDR_LOG_FORMAT',
54-
'[%(asctime)s] [%(request_id)s] [%(levelname)5s] [%(process)5s] [%(name)10s] %(message)s',
55+
"%(time_colored)s %(level_colored)s %(name_colored)s %(request_colored)s %(message)s",
5556
)
5657
log_formatter = os.getenv('JORMUNGANDR_LOG_FORMATTER', 'default') # default or json
5758
log_extras = json.loads(os.getenv('JORMUNGANDR_LOG_EXTRAS', '{}')) # fields to add to the logger
5859

5960

6061
access_log_format = os.getenv(
6162
'JORMUNGANDR_ACCESS_LOG_FORMAT',
62-
'[%(asctime)s] [%(request_id)s] [%(process)5s] [%(name)10s] %(message)s',
63+
'%(time_colored)s %(level_colored)s %(name_colored)s %(request_colored)s %(message)s',
6364
)
6465
access_log_formatter = os.getenv('JORMUNGANDR_ACCESS_LOG_FORMATTER', 'access_log')
6566

6667
logfmt_keys = json.loads(os.getenv('JORMUNGANDR_LOG_LOGFMT_KEYS', '[]'))
6768
logfmt_mapping = json.loads(os.getenv('JORMUNGANDR_LOG_LOGFMT_MAPPING', '{}'))
6869

69-
# logger configuration
70+
# logger configuration
7071
LOGGER = {
7172
'version': 1,
7273
'disable_existing_loggers': False,
7374
'formatters': {
74-
'default': {'format': log_format},
75-
'access_log': {'format': access_log_format},
75+
'default': {'()': 'jormungandr.logging_utils.ColorFormatter','format':log_format},
76+
'access_log': {'()': 'jormungandr.logging_utils.ColorFormatter','format': access_log_format},
7677
'json': {
7778
'()': 'jormungandr.logging_utils.CustomJsonFormatter',
7879
'format': log_format,

‎source/jormungandr/jormungandr/logging_utils.py‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,3 +57,28 @@ def __init__(self, *args, **kwargs):
5757
def process_log_record(self, log_record):
5858
log_record.update(self.extras)
5959
return log_record
60+
61+
class ColorFormatter(logging.Formatter):
62+
RESET = "\033[0m"
63+
64+
COLORS = {
65+
"time": "\033[2m", # gris léger
66+
"level_DEBUG": "\033[36m",
67+
"level_INFO": "\033[32m",
68+
"level_WARNING": "\033[33m",
69+
"level_ERROR": "\033[31m",
70+
"level_CRITICAL": "\033[41m",
71+
"name": "\033[90m", # magenta
72+
"request": "\033[34m", # bleu
73+
}
74+
75+
def format(self, record):
76+
level_color = self.COLORS.get(f"level_{record.levelname}", "")
77+
78+
record.level_colored = f"{level_color}{record.levelname:<5}{self.RESET}"
79+
record.time_colored = f"{self.COLORS['time']}{self.formatTime(record)}{self.RESET}"
80+
record.name_colored = f"{self.COLORS['name']}{record.name}{self.RESET}"
81+
request_id = getattr(record, "request_id", "-")
82+
record.request_colored = f"{self.COLORS['request']}{request_id}{self.RESET}"
83+
84+
return super().format(record)

0 commit comments

Comments
 (0)