Implement overriding log levels for separate modules
This commit is contained in:
parent
3d68a25e13
commit
b6ae96db5a
3 changed files with 53 additions and 0 deletions
9
src/loglevel_overrides.py
Normal file
9
src/loglevel_overrides.py
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
# This file is for adding rules for selectively enabling debug logging
|
||||||
|
# when working on the code.
|
||||||
|
# Add your rules here and skip this file when committing changes.
|
||||||
|
|
||||||
|
#import re
|
||||||
|
#from util import SelectiveLogger
|
||||||
|
#
|
||||||
|
#SelectiveLogger.addLogLevelRaisingRule("ConnServer")
|
||||||
|
#SelectiveLogger.addLogLevelRaisingRule(re.compile(r'^Site:'))
|
|
@ -4,6 +4,7 @@ import sys
|
||||||
import stat
|
import stat
|
||||||
import time
|
import time
|
||||||
import logging
|
import logging
|
||||||
|
import loglevel_overrides
|
||||||
|
|
||||||
startup_errors = []
|
startup_errors = []
|
||||||
def startupError(msg):
|
def startupError(msg):
|
||||||
|
|
43
src/util/SelectiveLogger.py
Normal file
43
src/util/SelectiveLogger.py
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
import logging
|
||||||
|
import re
|
||||||
|
|
||||||
|
log_level_raising_rules = []
|
||||||
|
|
||||||
|
def addLogLevelRaisingRule(rule, level=None):
|
||||||
|
if level is None:
|
||||||
|
level = logging.INFO
|
||||||
|
log_level_raising_rules.append({
|
||||||
|
"rule": rule,
|
||||||
|
"level": level
|
||||||
|
})
|
||||||
|
|
||||||
|
def matchLogLevelRaisingRule(name):
|
||||||
|
for rule in log_level_raising_rules:
|
||||||
|
if isinstance(rule["rule"], re.Pattern):
|
||||||
|
if rule["rule"].search(name):
|
||||||
|
return rule["level"]
|
||||||
|
else:
|
||||||
|
if rule["rule"] == name:
|
||||||
|
return rule["level"]
|
||||||
|
return None
|
||||||
|
|
||||||
|
class SelectiveLogger(logging.getLoggerClass()):
|
||||||
|
def __init__(self, name, level=logging.NOTSET):
|
||||||
|
return super().__init__(name, level)
|
||||||
|
|
||||||
|
def raiseLevel(self, level):
|
||||||
|
raised_level = matchLogLevelRaisingRule(self.name)
|
||||||
|
if raised_level is not None:
|
||||||
|
if level < raised_level:
|
||||||
|
level = raised_level
|
||||||
|
return level
|
||||||
|
|
||||||
|
def isEnabledFor(self, level):
|
||||||
|
level = self.raiseLevel(level)
|
||||||
|
return super().isEnabledFor(level)
|
||||||
|
|
||||||
|
def _log(self, level, msg, args, **kwargs):
|
||||||
|
level = self.raiseLevel(level)
|
||||||
|
return super()._log(level, msg, args, **kwargs)
|
||||||
|
|
||||||
|
logging.setLoggerClass(SelectiveLogger)
|
Loading…
Reference in a new issue