5545f05eee
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2.4 KiB
2.4 KiB
central_logging — drop-in klient pro centrální logování
Verze: 1.0 · Datum: 2026-06-08
Soubory: central_logging.py (import shim) + central_logging_v1.0.py (impl)
Knihovna, která ke stávajícímu souborovému logování přidá odesílání logů do
Loki přes bránu log_gateway. Jen standardní knihovna — žádné pip install.
Rychlý start
from central_logging import setup_logging
log = setup_logging("nazev_skriptu")
log.info("start")
log.error("chyba: %s", err)
setup_logging(...) — parametry
| Argument | Default | Popis |
|---|---|---|
app_name |
(povinný) | label aplikace v Loki |
log_file |
<app_name>.log |
cesta souborového logu |
keep_file |
ENV / True |
psát i do souboru? po měsíci → False |
level |
ENV / INFO |
min. úroveň |
gateway |
ENV / 192.168.1.76:8770 |
URL brány |
token |
ENV | sdílené tajemství |
env |
ENV / prod |
label prostředí |
Jak to funguje
emit()jen vloží záznam do fronty (neblokuje skript).- Vlákno na pozadí každé ~2 s pošle dávku (max 200 záznamů) na
POST /log/batch. - Výpadek brány → dávka se zapíše do
_log_spool/central_logging_spool_<app>.ndjsona přehraje se při příštím úspěšném spojení. Žádný log se neztratí. atexitpři ukončení skriptu dolije zbytek fronty.
Handler je psaný tak, aby nikdy neshodil aplikaci — všechny chyby logování se polykají.
Import a konvence verzí
Konvence projektu = verze ve jméně (central_logging_v1.0.py). Python ale neumí
import názvu s tečkou, proto je tu shim central_logging.py, který verzovaný
soubor načte přes importlib a re-exportuje setup_logging. Při vydání v1.1
stačí v shimu přepnout VERSION_FILE a starou verzi přesunout do TRASH/.
Vypnutí souborů (fáze C migrace)
Globálně:
set CENTRAL_LOG_KEEP_FILE=0 # Windows
export CENTRAL_LOG_KEEP_FILE=0 # Linux
nebo v kódu setup_logging(..., keep_file=False).