Spring Boot și logarea JSON cu utilizator și sesiune
Cum să adaugi date despre utilizator și sesiune în logurile Spring Boot fără dureri de cap.

Logurile sunt ca o cutie neagră: când totul merge bine, uiți de ele, dar când apare un bug în producție, scormonești prin sute de rânduri după un ac. Spring Boot implicit scrie loguri în format text, care e ok pentru citit de om, dar un coșmar pentru analiză automată.
Logarea JSON: colac de salvare pentru dezvoltator
Trecerea la format JSON e ca și cum ai înlocui un bilețel mototolit cu un tabel structurat. În video se arată cum să configurezi Logback sau Log4j2 pentru ca logurile să devină obiecte JSON cu câmpuri: timestamp, level, message și, cel mai important — user și session.
De ce e nevoie? Imaginează-ți: un utilizator se plânge că ceva s-a stricat. Te uiți în loguri, dar vezi doar o grămadă de mesaje identice de la diferiți utilizatori. Fără context, e ca și cum ai ghici în zaț. Dacă fiecare log are userId și sessionId, poți filtra instantaneu după utilizator și vezi tot lanțul acțiunilor lui. Magie, nu?
Cum adaugi utilizator și sesiune în loguri?
Cea mai simplă metodă e să folosești MDC (Mapped Diagnostic Context). E un fel de buzunar în framework-ul de logging unde poți pune orice date, iar ele apar automat în fiecare log din thread-ul curent. În Spring Boot, faci asta printr-un filtru sau intercepto:
- Creezi un filtru care, înainte de a procesa cererea, pune în MDC userId și sessionId din SecurityContext sau sesiunea HTTP.
- Configurezi layout-ul loggerului să scoată în format JSON, specificând să extragă aceste câmpuri din MDC.
- Gata — fiecare log conține acum context.
Apropo, nu uita să cureți MDC după cerere, altfel datele se vor scurge în alt thread — un bug simpatic în care un utilizator vede logurile altuia.
Comentariul studioului METABYTE: Și noi am pățit cu loguri text până când am trecut la JSON. Acum căutarea bugurilor e ca un joc de „găsește pisica” — doar că pisica sigur e acolo, nu trebuie să ghicești.
URMATORUL PAS
Ti-a placut abordarea?
Aplicam aceleasi principii in proiectele clientilor: AI, automatizari, produse care nu se sting dupa lansare.