Skip to content
This repository was archived by the owner on Jun 24, 2024. It is now read-only.

Commit a9951e7

Browse files
committed
feat(logger): updated the logger utility to be more colorful
1 parent a8f7f09 commit a9951e7

File tree

1 file changed

+32
-18
lines changed

1 file changed

+32
-18
lines changed

src/core/logger_utility.py

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,48 @@
11
from loguru import logger
2-
from rich.logging import RichHandler
2+
from rich.traceback import Traceback
3+
from rich.console import Console
4+
import io
35
import sys
46

57

6-
# Configure Loguru logger
8+
def rich_formatter(record):
9+
"""Rich formatter for loguru logger"""
10+
format_ = "<green>{time:YYYY-MM-DD HH:mm:ss.SSS}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>\n"
11+
if record["exception"] is not None:
12+
output = io.StringIO()
13+
console = Console(file=output, force_terminal=True)
14+
traceback = Traceback.from_exception(*record["exception"])
15+
console.print(traceback)
16+
record["extra"]["rich_exception"] = output.getvalue()
17+
format_ += "{extra[rich_exception]}"
18+
return format_
19+
20+
721
def setup_logger():
22+
"""Setup the logger configuration for the application"""
23+
824
# Remove default logger configuration
925
logger.remove()
1026

1127
# Add a handler for console logging with rich formatting
12-
logger.add(
13-
sys.stderr, format="{time} {level} {message}", level="INFO", colorize=True
14-
)
15-
logger.configure(
16-
handlers=[
17-
{
18-
"sink": RichHandler(markup=True),
19-
"format": " <cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>",
20-
}
21-
]
22-
)
28+
logger.add(sys.stderr, format=rich_formatter, level="INFO", colorize=True)
2329

2430
# Add a handler for file logging
2531
logger.add("logs/app_{time}.log", rotation="1 week", level="DEBUG")
2632

2733

2834
setup_logger()
2935

30-
# Example logging
31-
logger.info("This is an informational message.")
32-
logger.debug("This is a debug message.")
33-
logger.error("This is an error message.")
34-
logger.warning("This is a warning message.")
36+
# Example log messages:
37+
# @logger.catch
38+
# def divide(a, b):
39+
# a / b
40+
41+
42+
# divide(1, 0)
43+
44+
# logger.info("This is an info message")
45+
# logger.debug("This is a debug message")
46+
# logger.warning("This is a warning message")
47+
# logger.error("This is an error message")
48+
# logger.critical("This is a critical message")

0 commit comments

Comments
 (0)