Skip to content

Commit f53545f

Browse files
committed
Add app_logger debug_mode to temporarily change log level
1 parent 9bfe938 commit f53545f

File tree

2 files changed

+38
-2
lines changed

2 files changed

+38
-2
lines changed

plain/plain/logs/configure.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ def configure_logging(logging_settings):
1515
},
1616
"handlers": {
1717
"plain_console": {
18-
"level": environ.get("PLAIN_LOG_LEVEL", "INFO"),
18+
"level": "DEBUG",
1919
"class": "logging.StreamHandler",
2020
"formatter": "simple",
2121
},
2222
"app_console": {
23-
"level": environ.get("APP_LOG_LEVEL", "INFO"),
23+
"level": "DEBUG",
2424
"class": "logging.StreamHandler",
2525
"formatter": "simple",
2626
},

plain/plain/logs/loggers.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import logging
2+
import threading
23

34
app_logger = logging.getLogger("app")
45

@@ -70,5 +71,40 @@ def critical(self, message, **kwargs):
7071
self.log(logging.CRITICAL, message, **kwargs)
7172

7273

74+
class DebugMode:
75+
"""Context manager to temporarily set DEBUG level on a logger with reference counting."""
76+
77+
def __init__(self, logger):
78+
self.logger = logger
79+
self.original_level = None
80+
self._ref_count = 0
81+
self._lock = threading.Lock()
82+
83+
def __enter__(self):
84+
"""Store original level and set to DEBUG."""
85+
self.start()
86+
return self
87+
88+
def __exit__(self, exc_type, exc_val, exc_tb):
89+
"""Restore original level."""
90+
self.end()
91+
92+
def start(self):
93+
"""Enable DEBUG logging level."""
94+
with self._lock:
95+
if self._ref_count == 0:
96+
self.original_level = self.logger.level
97+
self.logger.setLevel(logging.DEBUG)
98+
self._ref_count += 1
99+
100+
def end(self):
101+
"""Restore original logging level."""
102+
with self._lock:
103+
self._ref_count = max(0, self._ref_count - 1)
104+
if self._ref_count == 0:
105+
self.logger.setLevel(self.original_level)
106+
107+
73108
# Make this accessible from the app_logger
74109
app_logger.kv = KVLogger(app_logger)
110+
app_logger.debug_mode = DebugMode(app_logger)

0 commit comments

Comments
 (0)