This commit is contained in:
2026-06-10 08:53:19 +02:00
parent 178b0e4164
commit 2028532eff
4 changed files with 34 additions and 202 deletions
+19 -5
View File
@@ -226,6 +226,7 @@ def setup_logging(
gateway: Optional[str] = None,
token: Optional[str] = None,
env: Optional[str] = None,
quiet_loggers: Optional[List[str]] = None,
fmt: str = "%(asctime)s | %(levelname)s | %(name)s | %(message)s",
datefmt: str = "%Y-%m-%d %H:%M:%S",
spool_dir: Optional[str] = None,
@@ -245,7 +246,13 @@ def setup_logging(
Returns:
nakonfigurovaný root logger (lze i logging.getLogger()).
"""
lvl_name = (level or DEFAULT_LEVEL).upper()
# Konfiguraci čteme z os.environ AŽ TADY (call-time), ne při importu modulu.
# Důvod: skripty často načítají vlastní .env (do os.environ) až po importu
# této knihovny — kdybychom četli při importu, token/gateway bychom minuli.
gw = gateway or os.environ.get("CENTRAL_LOG_GATEWAY", "http://192.168.1.76:8770")
tok = token or os.environ.get("CENTRAL_LOG_TOKEN", "change-this-shared-secret")
ev = env or os.environ.get("CENTRAL_LOG_ENV", "prod")
lvl_name = (level or os.environ.get("CENTRAL_LOG_LEVEL", "INFO")).upper()
lvl = getattr(logging, lvl_name, logging.INFO)
if keep_file is None:
@@ -254,6 +261,13 @@ def setup_logging(
root = logging.getLogger()
root.setLevel(lvl)
# Ztiš upovídané knihovny (jinak root@INFO chytá jejich šum do centrálu).
# Předej quiet_loggers=[] pro vypnutí, nebo vlastní seznam.
_default_quiet = ["httpx", "httpcore", "urllib3", "anthropic", "openai",
"PIL", "asyncio", "fdb", "fontTools", "pdfminer"]
for _name in (_default_quiet if quiet_loggers is None else quiet_loggers):
logging.getLogger(_name).setLevel(logging.WARNING)
# odstraň případné staré handlery (idempotentní setup)
for h in list(root.handlers):
root.removeHandler(h)
@@ -276,9 +290,9 @@ def setup_logging(
)
sender = _GatewaySender(
app_name=app_name,
gateway=gateway or DEFAULT_GATEWAY,
token=token or DEFAULT_TOKEN,
env=env or DEFAULT_ENV,
gateway=gw,
token=tok,
env=ev,
spool_dir=spool_base / "_log_spool",
)
ch = CentralLogHandler(sender)
@@ -290,7 +304,7 @@ def setup_logging(
atexit.register(sender.flush_and_stop)
root.info("central_logging v1.0 inicializováno (app=%s, keep_file=%s, gateway=%s)",
app_name, keep_file, gateway or DEFAULT_GATEWAY)
app_name, keep_file, gw)
return root