feat: better state_handler

This commit is contained in:
2026-03-04 14:02:19 -03:00
parent 11ff4c0c21
commit 06ae9b41f0
17 changed files with 158 additions and 42 deletions

View File

@@ -5,7 +5,7 @@ import sys
from pathlib import Path
H = TypeVar('H', bound=logging.Handler)
H = TypeVar("H", bound=logging.Handler)
class RunLogger(logging.Logger):
@@ -18,33 +18,27 @@ class RunLogger(logging.Logger):
self._configure_handler(logging.StreamHandler(stream), level)
)
def set_output_file(self, outfile: Path, level=logging.INFO):
for handler in list(self.handlers):
if not isinstance(handler, logging.FileHandler):
continue
self.handlers.remove(handler)
self.handlers.append(
self._create_file_handler(outfile, level)
)
self.handlers.append(self._create_file_handler(outfile, level))
@staticmethod
def _create_file_handler(file: str|Path, level) -> logging.FileHandler:
def _create_file_handler(file: str | Path, level) -> logging.FileHandler:
file = Path(file)
if file.exists():
file.rename(file.with_suffix('.log.backup'))
file.rename(file.with_suffix(".log.backup"))
handler = logging.FileHandler(file)
return RunLogger._configure_handler(handler, level)
@staticmethod
def _configure_handler(handler: H, level) -> H:
handler.setLevel(level)
formatter = logging.Formatter('%(message)s')
formatter = logging.Formatter("%(message)s")
handler.setFormatter(formatter)
return handler
return handler