Kdo ještě v posledních letech nepřešel, tak v lednu bude přecházet na http://www.slf4j.org/ ;-)
Dokud se log4j 2 nezbaví toho nesmyslu s interpretováním logovaných zpráv tak to bude pořád nebezpečná věc. Na co proboha myslel ten kdo to tam naimplementoval? Vždyť to je úplně k ničemu, jen to působí problémy! Neznám ve svém okolí nikoho kdo by chtěl aby logovací framework logované zprávy jakkoliv pozměňoval.
Java nema globalni promenne. Pozadavek na to aby logovana zprava obsahovala nejakou kontextovou hodnotu je pomerne casty.
Napr, kdyz se dozvim, ze SQL dotaz selhal ale nevim s jakymi parametry byl spusten.
Taky se stava, ze je potreba logovani kvuli nejakemu problemu totalne prekopat, a zobrazit dalsi detail. Flexibilita je u logovacich frameworku dulezita, jen se to nesmi prehanet.
Java má statické proměnné což by se dalo považovat za globální proměnné. Ve spoustě případů je vhodnější použít ThreadLocal. To ale nic nemění na tom že co se do logovacího frameworku pošle to se má zalogovat a ne nějak podivně interpretovat - taková logika už do logovacího frameworku nepatří, zbytečně ho komplikuje a zanáší chyby.