change command handler strat to function decorator (#26)

* change command handler strat to function decorator

* add handlers back to agent class
This commit is contained in:
Josh Thomas 2024-12-12 19:39:43 -06:00 committed by GitHub
parent 0a6e975ca5
commit 520a2eff59
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 279 additions and 447 deletions

44
python/djls/logging.py Normal file
View file

@ -0,0 +1,44 @@
from __future__ import annotations
import logging
import sys
from dataclasses import dataclass
from pathlib import Path
@dataclass
class LogConfig:
log_file: Path | str = "/tmp/djls_debug.log"
log_level: int = logging.DEBUG
console_level: int = logging.DEBUG
file_level: int = logging.DEBUG
format: str = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
def configure_logging(config: LogConfig | None = None) -> logging.Logger:
if config is None:
config = LogConfig()
logger = logging.getLogger("djls")
logger.setLevel(config.log_level)
# Clear any existing handlers
logger.handlers.clear()
# File handler
fh = logging.FileHandler(config.log_file)
fh.setLevel(config.file_level)
# Console handler
ch = logging.StreamHandler(sys.stderr)
ch.setLevel(config.console_level)
# Formatter
formatter = logging.Formatter(config.format)
fh.setFormatter(formatter)
ch.setFormatter(formatter)
logger.addHandler(fh)
logger.addHandler(ch)
return logger