Skip to content

Commit 9764e6e

Browse files
committed
fix: configure log colors
1 parent 8211f50 commit 9764e6e

3 files changed

Lines changed: 24 additions & 3 deletions

File tree

apps/api/karrio/server/settings/base.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -643,6 +643,7 @@
643643
DJANGO_LOG_LEVEL = "INFO" if DEBUG else config("DJANGO_LOG_LEVEL", default="WARNING")
644644
LOG_FILE_DIR = config("LOG_DIR", default=WORK_DIR)
645645
LOG_FILE_NAME = os.path.join(LOG_FILE_DIR, "debug.log")
646+
LOG_COLORIZE = config("LOG_COLORIZE", default=True, cast=bool)
646647
DRF_TRACKING_ADMIN_LOG_READONLY = True
647648

648649
# Option to use Loguru (default: True)
@@ -728,6 +729,7 @@
728729
log_file=LOG_FILE_NAME,
729730
intercept_django=True,
730731
enqueue=True, # Thread-safe async logging
732+
colorize=LOG_COLORIZE,
731733
)
732734
except ImportError as e:
733735
# Note: Using print here as Loguru failed to load

modules/core/karrio/server/core/logging.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ def get_django_log_config():
5555
"log_file": getattr(settings, "LOG_FILE_NAME", None),
5656
"log_dir": getattr(settings, "LOG_FILE_DIR", None),
5757
"debug": getattr(settings, "DEBUG", False),
58+
"colorize": getattr(settings, "LOG_COLORIZE", True),
5859
}
5960
except Exception:
6061
# Fallback to environment variables
@@ -63,6 +64,8 @@ def get_django_log_config():
6364
"log_file": os.getenv("LOG_FILE_NAME"),
6465
"log_dir": os.getenv("LOG_DIR"),
6566
"debug": os.getenv("DEBUG_MODE", "False").lower() in ("true", "1", "yes"),
67+
"colorize": os.getenv("LOG_COLORIZE", "True").lower()
68+
in ("true", "1", "yes"),
6669
}
6770

6871

@@ -159,6 +162,7 @@ def setup_django_loguru(
159162
intercept_django: bool = True,
160163
serialize: bool = False,
161164
enqueue: bool = True,
165+
colorize: Optional[bool] = None,
162166
):
163167
"""
164168
Set up Loguru for Django with optimal configuration.
@@ -169,6 +173,7 @@ def setup_django_loguru(
169173
intercept_django: Whether to intercept Django's logging (recommended)
170174
serialize: Whether to serialize logs as JSON
171175
enqueue: Whether to use async logging (recommended for Django)
176+
colorize: Whether to colorize console logs
172177
173178
This function should be called in Django settings after LOGGING configuration.
174179
"""
@@ -179,14 +184,15 @@ def setup_django_loguru(
179184
config = get_django_log_config()
180185
log_level = level or config["level"]
181186
debug_mode = config["debug"]
187+
colorize = config["colorize"] if colorize is None else colorize
182188
log_format = get_log_format(debug_mode)
183189

184-
# Add console handler with colors
190+
# Add console handler
185191
_logger.add(
186192
sys.stderr,
187193
format=log_format,
188194
level=log_level,
189-
colorize=True,
195+
colorize=colorize,
190196
diagnose=debug_mode,
191197
backtrace=True,
192198
enqueue=enqueue,

modules/sdk/karrio/core/utils/logger.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,15 @@ def get_log_format() -> str:
3939
)
4040

4141

42+
def get_log_colorize() -> bool:
43+
"""Check if console log colorization is enabled."""
44+
return os.getenv("KARRIO_LOG_COLORIZE", os.getenv("LOG_COLORIZE", "True")).lower() in (
45+
"true",
46+
"1",
47+
"yes",
48+
)
49+
50+
4251
def should_log_to_file() -> bool:
4352
"""Check if logging to file is enabled."""
4453
return os.getenv("KARRIO_LOG_FILE", "").strip() != ""
@@ -55,6 +64,7 @@ def configure_logger(
5564
log_file: Optional[str] = None,
5665
diagnose: Optional[bool] = None,
5766
backtrace: Optional[bool] = None,
67+
colorize: Optional[bool] = None,
5868
serialize: bool = False,
5969
enqueue: bool = False,
6070
):
@@ -66,13 +76,15 @@ def configure_logger(
6676
log_file: Path to log file (if None, will check KARRIO_LOG_FILE env var)
6777
diagnose: Whether to enable diagnostic mode with variable values
6878
backtrace: Whether to enable backtrace on exceptions
79+
colorize: Whether to colorize console logs
6980
serialize: Whether to serialize logs as JSON
7081
enqueue: Whether to use async logging (thread-safe)
7182
7283
Environment Variables:
7384
KARRIO_LOG_LEVEL: Set the logging level (default: INFO)
7485
KARRIO_LOG_FORMAT: Custom log format string
7586
KARRIO_LOG_FILE: Path to log file for file output
87+
KARRIO_LOG_COLORIZE: Enable console log colorization (default: True)
7688
KARRIO_LOG_ROTATION: Log rotation setting (default: "500 MB")
7789
KARRIO_LOG_RETENTION: Log retention setting (default: "10 days")
7890
KARRIO_LOG_DIAGNOSE: Enable diagnostic mode (default: False)
@@ -84,6 +96,7 @@ def configure_logger(
8496
# Determine configuration from environment or parameters
8597
log_level = level or get_log_level()
8698
log_format = get_log_format()
99+
colorize = get_log_colorize() if colorize is None else colorize
87100

88101
if diagnose is None:
89102
diagnose = os.getenv("KARRIO_LOG_DIAGNOSE", "False").lower() in (
@@ -104,7 +117,7 @@ def configure_logger(
104117
sys.stderr,
105118
format=log_format,
106119
level=log_level,
107-
colorize=True,
120+
colorize=colorize,
108121
diagnose=diagnose,
109122
backtrace=backtrace,
110123
enqueue=enqueue,

0 commit comments

Comments
 (0)