Skip to content

Commit b1433d1

Browse files
perf($loguru): abstract function for loguru configuration
1 parent 71181d5 commit b1433d1

3 files changed

Lines changed: 63 additions & 54 deletions

File tree

home_guardian/__init__.py

Lines changed: 2 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,3 @@
1-
import logging
2-
import sys
1+
from home_guardian.configuration.loguru import configure
32

4-
from loguru import logger
5-
6-
message_format = (
7-
"<green>{time:YYYY-MM-DD HH:mm:ss.SSS}</green> | "
8-
"<level>{level: <8}</level> | "
9-
"<blue>{thread.name: <15}</blue> | "
10-
"<cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - "
11-
"<level>{message}</level>"
12-
)
13-
print(f"message_format: {message_format}")
14-
# Remove a previously added handler and stop sending logs to its sink.
15-
logger.remove(handler_id=None)
16-
# Set up logging
17-
log_file = "logs/home_guardian.{time}.log"
18-
logger.add(
19-
log_file,
20-
level="DEBUG",
21-
format=message_format,
22-
enqueue=True,
23-
# turn to false if in production to prevent data leaking
24-
backtrace=False,
25-
rotation="00:00",
26-
retention="7 Days",
27-
compression="gz",
28-
serialize=False,
29-
)
30-
# Override the default stderr
31-
logger.add(sys.stderr, format=message_format)
32-
33-
34-
# Intercept standard logging https://gist.github.com/devsetgo/28c2edaca2d09e267dec46bb2e54b9e2
35-
class InterceptHandler(logging.Handler):
36-
def emit(self, record):
37-
# Get corresponding Loguru level if it exists
38-
try:
39-
level = logger.level(record.levelname).name
40-
except ValueError:
41-
level = record.levelno
42-
43-
# Find caller from where originated the logged message
44-
frame, depth = logging.currentframe(), 2
45-
while frame.f_code.co_filename == logging.__file__:
46-
frame = frame.f_back
47-
depth += 1
48-
49-
logger.opt(depth=depth, exception=record.exc_info).log(
50-
level, record.getMessage()
51-
)
52-
53-
54-
logging.basicConfig(handlers=[InterceptHandler()], level=0)
55-
logger.warning("Loguru logging initialized")
3+
configure()

home_guardian/configuration/__init__.py

Whitespace-only changes.
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import logging
2+
import sys
3+
4+
from loguru import logger
5+
6+
message_format = (
7+
"<green>{time:YYYY-MM-DD HH:mm:ss.SSS}</green> | "
8+
"<level>{level: <8}</level> | "
9+
"<blue>{thread.name: <15}</blue> | "
10+
"<cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - "
11+
"<level>{message}</level>"
12+
)
13+
print(f"message_format: {message_format}")
14+
# Remove a previously added handler and stop sending logs to its sink.
15+
logger.remove(handler_id=None)
16+
# Set up logging
17+
log_file = "logs/home_guardian.{time}.log"
18+
logger.add(
19+
log_file,
20+
level="DEBUG",
21+
format=message_format,
22+
enqueue=True,
23+
# turn to false if in production to prevent data leaking
24+
backtrace=False,
25+
rotation="00:00",
26+
retention="7 Days",
27+
compression="gz",
28+
serialize=False,
29+
)
30+
# Override the default stderr
31+
logger.add(sys.stderr, format=message_format)
32+
33+
34+
# Intercept standard logging https://gist.github.com/devsetgo/28c2edaca2d09e267dec46bb2e54b9e2
35+
class InterceptHandler(logging.Handler):
36+
def emit(self, record):
37+
# Get corresponding Loguru level if it exists
38+
try:
39+
level = logger.level(record.levelname).name
40+
except ValueError:
41+
level = record.levelno
42+
43+
# Find caller from where originated the logged message
44+
frame, depth = logging.currentframe(), 2
45+
while frame.f_code.co_filename == logging.__file__:
46+
frame = frame.f_back
47+
depth += 1
48+
49+
logger.opt(depth=depth, exception=record.exc_info).log(
50+
level, record.getMessage()
51+
)
52+
53+
54+
logging.basicConfig(handlers=[InterceptHandler()], level=0)
55+
56+
57+
def configure() -> None:
58+
"""
59+
Configure logging.
60+
"""
61+
logger.warning("Loguru logging configured")

0 commit comments

Comments
 (0)