updated debug logger [no ci]

pull/2720/head
karnigen 2024-03-23 18:43:06 +01:00
rodzic 35338b4a1a
commit 1063ea147e
3 zmienionych plików z 23 dodań i 17 usunięć

Wyświetl plik

@ -56,9 +56,9 @@ disable_existing_loggers = false
### used for: logger = logging.getLogger("inkstitch.debug")
### - use quotes for the logger name with dots, otherwise it will be treated as a table subsection
### - [loggers.inkstitch.debug] is not the same as [loggers.'inkstitch.debug']
### - to disable the logger, comment out handlers
[loggers.'inkstitch.debug']
level = "DEBUG"
level = "DEBUG" # to enable the logger, seems to be the default
# level = "CRITICAL" # to disable the logger
handlers = [ "file_inkstitch_debug",]
propagate = false

Wyświetl plik

@ -79,15 +79,24 @@ class Debug(object):
self.last_log_time = None
self.current_layer = None
self.group_stack = []
self.svg_filename = None
def enable(self):
# determine svg filename from logger
if len(logger.handlers) > 0 and isinstance(logger.handlers[0], logging.FileHandler):
# determine filename of svg file from logger
filename = Path(logger.handlers[0].baseFilename)
self.svg_filename = filename.with_suffix(".svg")
self.svg_filename.unlink(missing_ok=True) # remove existing svg file
# self.log is activated by active logger
# - enabled only if logger has any handler,
# for "inkstitch.debug" simply comment out handlers in .toml file to disable for logger
if len(logger.handlers) > 0: # count of handlers
# - enabled only if logger first handler is FileHandler
# to disable "inkstitch.debug" simply set logging level to CRITICAL
if logger.isEnabledFor(logging.INFO) and self.svg_filename is not None:
self.enabled = True
self.log("Logging enabled")
self.log(f"Logging enabled with svg file: {self.svg_filename}")
self.init_svg()
else:
# use alternative logger to log message if logger has no handlers
logger_inkstich.info("No handlers in logger, cannot enable logging and svg file creation")
@ -97,16 +106,13 @@ class Debug(object):
atexit.register(self.save_svg)
def save_svg(self):
# check if there is a file handler and is type of logging.FileHandler
if len(logger.handlers) > 0 and isinstance(logger.handlers[0], logging.FileHandler):
filename = Path(logger.handlers[0].baseFilename)
svg_file = filename.with_suffix(".svg")
self.log(f"Writing svg file: {svg_file}")
if self.enabled and self.svg_filename is not None:
self.log(f"Writing svg file: {self.svg_filename}")
tree = etree.ElementTree(self.svg)
tree.write(str(svg_file)) # lxml <5.0.0 does not support Path objects
tree.write(str(self.svg_filename)) # lxml <5.0.0 does not support Path objects, requires string
else:
# use alternative logger to log message if logger has no handlers
logger_inkstich.info("No file handler in logger cannot save svg file")
logger_inkstich.info(f"Saving to svg file is not activated {self.svg_filename=}")
@check_enabled
@unwrap_arguments

Wyświetl plik

@ -102,7 +102,7 @@ def activate_for_frozen():
if docpath is not None and loglevel is not None and loglevel.upper() in ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL']:
# end user enabled logging & warnings are redirect output to input_svg.inkstitch.log
# The end user enabled logging and warnings are redirected to the input_svg.inkstitch.log file.
vars = {
'loglevel': loglevel.upper(),
@ -113,7 +113,7 @@ def activate_for_frozen():
# dictConfig has access to top level variables, dict contains: ext://__main__.var
# - restriction: variable must be last token in string - very limited functionality, avoid using it
# here is logging activated, so we can use logger
# After this operation, logging will be activated, so we can use the logger.
logging.config.dictConfig(config) # configure root logger from dict
logging.captureWarnings(True) # capture all warnings to log file with level WARNING
@ -153,7 +153,7 @@ def activate_for_development(ini: dict, SCRIPTDIR: Path):
def configure_logging(config: dict, ini: dict, vars: dict):
config = expand_variables(config, vars)
# here is logging activated, so now we can use logger
# After this operation, logging will be activated, so we can use the logger.
logging.config.dictConfig(config) # configure loggers from dict - using loglevel, logfilename
warnings_capture = config.get('warnings_capture', True)
@ -163,7 +163,7 @@ def configure_logging(config: dict, ini: dict, vars: dict):
disable_logging = safe_get(ini, "LOGGING", "disable_logging", default=False)
if disable_logging:
logger.warning("Logging is disabled by configuration in ini file.")
logger.warning(f"Logging is disabled by configuration in ini file. {disable_logging = }")
logging.disable() # globally disable all logging of all loggers