Sto tentando di impostare la registrazione asincrona (per motivi di prestazioni) all'interno dei metodi web REST attualmente eseguiti in un server profilo liberty.log4j2: posizione per l'impostazione della proprietà di sistema Log4jContextSelector per la registrazione asincrona
Per fare questo, ho istituito la seguente proprietà:
System.setProperty("Log4jContextSelector", "org.apache.logging.log4j.core.async.AsyncLoggerContextSelector");
Il mio problema è che non importa dove faccio questo, a volte funziona e la registrazione è molto veloce, e qualche volta doesn' t.
Ho provato (a) nel costruttore della classe contenente tutti i metodi web REST (b) nel metodo filtro doFilter che viene chiamato prima del metodo REST (c) nel metodo del filtro init (d) nel metodo REST stesso
Nessuno di questi luoghi funziona in modo coerente.
Qualcuno può offrire una spiegazione per questo comportamento e, se possibile, un modo suggerito per risolvere il problema.
MODIFICA: Sembra che log4j sia inizializzato prima di chiamare setProperty. Quindi quello che devo fare è impostare la proprietà tramite il profilo liberty.
@fnt No, non ho prove, non ho fatto confronti, quindi cambierò il mio commento. Ho solo un confronto con il logging standard qui [Binary logging performance - slide 23] (http://www.slideshare.net/cnbailey/websphere-technical-university-top-websphere-problem-determination-features). – Gas
È possibile valutare [registrazione binario] (http://www-01.ibm.com/support/knowledgecenter/SSAW57_8.5.5/com.ibm.websphere.wlp.nd.multiplatform.doc/ae/twlp_confHPEL.html?cp = SSAW57_8.5.5% 2F3-0-2-9-1 & lang = it) opzione in Liberty in quanto ha prestazioni migliori rispetto alla registrazione standard. Forse sarà abbastanza buono per te. – Gas
Buona lettura. https://springframework.guru/asynchronous-logging-with-log4j-2/ –