Spravne nastavene logovani je rozdil mezi hodinovym debugovanim a petuminutovou diagnostikou. Spatne logovani je bud prilis (tisice radku za sekundu, ktere nikdo necte) nebo prilis malo (CHYBA — nic vic).
SLF4J jako fasada¶
SLF4J (Simple Logging Facade for Java) odstinuje vas kod od konkretni logovaci implementace. V produkci pouzivate Log4j, na test Logback — kod se nemeni. Vzdy logujte pres SLF4J, nikdy primo pres Log4j API.
Log levely — pravidla¶
ERROR: neco selhalo a vyzaduje zasah (databaze nedostupna, externi sluzba neodpovida). WARN: neco je podezrele, ale aplikace pokracuje (deprecated API, blizi se limit). INFO: vyznamne business udalosti (uzivatel se prihlasil, objednavka vytvorena). DEBUG: detaily pro vyvojare (SQL dotazy, HTTP hlavicky). Na produkci INFO a vyse, na dev DEBUG.
MDC — Mapped Diagnostic Context¶
Kazdy log radek by mel obsahovat: cas, thread, level, logger, message — a taky uzivatelske jmeno, session ID, request ID. MDC to resi: na zacatku requestu vlozite userId do MDC, kazdy log radek ho automaticky obsahuje. Neocenitelne pri hledani problemu konkretniho uzivatele.
Rotace a retence¶
DailyRollingFileAppender: novy soubor kazdy den. Retence 30 dni. Maximalni velikost 100 MB per soubor (RollingFileAppender). Komprese starych logu (gzip). Na produkci NIKDY logujte do stdout — pouzijte FileAppender.
Centralni sber¶
S 20 servery je cteni logu na kazdem serveru zvlast neprakticke. Rsyslog/syslog-ng pro centralni sber na log server. Hledame reseni pro full-text search v lozich — zatim grep, ale neska’luje.
Pravidla¶
- SLF4J fasada. 2. Spravne log levely. 3. MDC pro kontext. 4. Rotace a retence. 5. Logujte co, ne jak (vysledek operace, ne kazdy radek kodu).
Brauchen Sie Hilfe bei der Implementierung?
Unsere Experten helfen Ihnen bei Design, Implementierung und Betrieb. Von der Architektur bis zur Produktion.
Kontaktieren Sie uns