mirror of
https://github.com/PR0M3TH3AN/SeedPass.git
synced 2025-09-07 14:58:56 +00:00
Merge pull request #854 from PR0M3TH3AN/codex/reduce-log-verbosity-in-tui
Refine console logging
This commit is contained in:
@@ -34,13 +34,9 @@ def initialize_app() -> None:
|
|||||||
"""Ensure the application directory exists."""
|
"""Ensure the application directory exists."""
|
||||||
try:
|
try:
|
||||||
APP_DIR.mkdir(exist_ok=True, parents=True)
|
APP_DIR.mkdir(exist_ok=True, parents=True)
|
||||||
if logger.isEnabledFor(logging.DEBUG):
|
logger.debug("Application directory created at %s", APP_DIR)
|
||||||
logger.info(f"Application directory created at {APP_DIR}")
|
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
if logger.isEnabledFor(logging.DEBUG):
|
logger.error("Failed to create application directory: %s", exc, exc_info=True)
|
||||||
logger.error(
|
|
||||||
f"Failed to create application directory: {exc}", exc_info=True
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
# -----------------------------------
|
# -----------------------------------
|
||||||
|
34
src/main.py
34
src/main.py
@@ -9,7 +9,6 @@ if vendor_dir.exists():
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import logging
|
import logging
|
||||||
from logging.handlers import QueueHandler, QueueListener
|
|
||||||
import signal
|
import signal
|
||||||
import time
|
import time
|
||||||
import argparse
|
import argparse
|
||||||
@@ -39,8 +38,11 @@ from utils import (
|
|||||||
)
|
)
|
||||||
from utils.clipboard import ClipboardUnavailableError
|
from utils.clipboard import ClipboardUnavailableError
|
||||||
from utils.atomic_write import atomic_write
|
from utils.atomic_write import atomic_write
|
||||||
from utils.logging_utils import ConsolePauseFilter, pause_logging_for_ui
|
from utils.logging_utils import (
|
||||||
import queue
|
ConsolePauseFilter,
|
||||||
|
ChecksumWarningFilter,
|
||||||
|
pause_logging_for_ui,
|
||||||
|
)
|
||||||
from local_bip85.bip85 import Bip85Error
|
from local_bip85.bip85 import Bip85Error
|
||||||
|
|
||||||
|
|
||||||
@@ -79,22 +81,16 @@ def load_global_config() -> dict:
|
|||||||
return {}
|
return {}
|
||||||
|
|
||||||
|
|
||||||
_queue_listener: QueueListener | None = None
|
def configure_logging() -> None:
|
||||||
|
"""Configure application-wide logging handlers."""
|
||||||
|
|
||||||
def configure_logging():
|
|
||||||
"""Configure application-wide logging with queue-based handlers."""
|
|
||||||
global _queue_listener
|
|
||||||
|
|
||||||
log_directory = Path("logs")
|
log_directory = Path("logs")
|
||||||
log_directory.mkdir(parents=True, exist_ok=True)
|
log_directory.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
log_queue: queue.Queue[logging.LogRecord] = queue.Queue()
|
|
||||||
queue_handler = QueueHandler(log_queue)
|
|
||||||
|
|
||||||
console_handler = logging.StreamHandler(sys.stderr)
|
console_handler = logging.StreamHandler(sys.stderr)
|
||||||
console_handler.setLevel(logging.ERROR)
|
console_handler.setLevel(logging.WARNING)
|
||||||
console_handler.addFilter(ConsolePauseFilter())
|
console_handler.addFilter(ConsolePauseFilter())
|
||||||
|
console_handler.addFilter(ChecksumWarningFilter())
|
||||||
|
|
||||||
file_handler = logging.FileHandler(log_directory / "main.log")
|
file_handler = logging.FileHandler(log_directory / "main.log")
|
||||||
file_handler.setLevel(logging.DEBUG)
|
file_handler.setLevel(logging.DEBUG)
|
||||||
@@ -105,14 +101,12 @@ def configure_logging():
|
|||||||
console_handler.setFormatter(formatter)
|
console_handler.setFormatter(formatter)
|
||||||
file_handler.setFormatter(formatter)
|
file_handler.setFormatter(formatter)
|
||||||
|
|
||||||
_queue_listener = QueueListener(log_queue, console_handler, file_handler)
|
root_logger = logging.getLogger()
|
||||||
_queue_listener.start()
|
root_logger.setLevel(logging.DEBUG)
|
||||||
|
root_logger.handlers.clear()
|
||||||
|
root_logger.addHandler(console_handler)
|
||||||
|
root_logger.addHandler(file_handler)
|
||||||
|
|
||||||
logging.basicConfig(
|
|
||||||
level=logging.DEBUG,
|
|
||||||
handlers=[queue_handler],
|
|
||||||
force=True,
|
|
||||||
)
|
|
||||||
logging.captureWarnings(True)
|
logging.captureWarnings(True)
|
||||||
|
|
||||||
logging.getLogger("monstr").setLevel(logging.ERROR)
|
logging.getLogger("monstr").setLevel(logging.ERROR)
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
import logging
|
import logging
|
||||||
|
from pathlib import Path
|
||||||
from contextlib import contextmanager
|
from contextlib import contextmanager
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
|
|
||||||
@@ -14,6 +15,20 @@ class ConsolePauseFilter(logging.Filter):
|
|||||||
return not _console_paused
|
return not _console_paused
|
||||||
|
|
||||||
|
|
||||||
|
class ChecksumWarningFilter(logging.Filter):
|
||||||
|
"""Filter allowing only checksum warnings and errors to surface."""
|
||||||
|
|
||||||
|
def filter(
|
||||||
|
self, record: logging.LogRecord
|
||||||
|
) -> bool: # pragma: no cover - simple filter
|
||||||
|
if record.levelno >= logging.ERROR:
|
||||||
|
return True
|
||||||
|
return (
|
||||||
|
record.levelno == logging.WARNING
|
||||||
|
and Path(record.pathname).name == "checksum.py"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def pause_console_logging() -> None:
|
def pause_console_logging() -> None:
|
||||||
"""Temporarily pause logging to console handlers."""
|
"""Temporarily pause logging to console handlers."""
|
||||||
global _console_paused
|
global _console_paused
|
||||||
|
Reference in New Issue
Block a user