C'è un modo per specificare Log4J 2.x log4j2.xml
posizione del file manualmente (come DOMConfigurator
in Log4J 1.x), senza scherzare con classpath e le proprietà di sistema?Come specificare la posizione di configurazione di Log4J 2.x?
risposta
È possibile utilizzare il metodo statico #initialize(String contextName, ClassLoader loader, String configLocation)
(vedere la fonte here) in org.apache.logging.log4j.core.config.Configurator
. (È possibile passare null per il caricatore di classe.)
essere consapevoli del fatto che questa classe non fa parte delle API pubblica in modo il codice può rompere con qualsiasi versione minore.
Per completezza, è anche possibile specificare la posizione del file di configurazione di sistema con questa proprietà:
-Dlog4j.configurationFile=path/to/log4j2.xml
Utilizzando la LoggerContext permette di setConfigLocation.
File f = new File(this.logConfigFile);
URI fc = f.toURI();
System.out.println("Loading logging config file: " + fc);
Logger l = (Logger) LogManager.getLogger(LogManager.ROOT_LOGGER_NAME);
l.getContext().setConfigLocation(fc);
o in alternativa
LoggerContext.getContext().setConfigLocation(java.net.URI);
è possibile inizializzare come qui di seguito così
ConfigurationSource source = new ConfigurationSource(new FileInputStream(log4j file Path));
XmlConfiguration xmlConfig = new XmlConfiguration(source);
Logger logger = (Logger) LogManager.getLogger();
logger.getContext().start(xmlConfig);
In ogni classe è possibile ottenere un'istanza logger, come di seguito
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
private final Logger logger = LogManager.getLogger(ABC.class);
[org.apache.logging.log4j.Logger] (https://logging.apache.org/log4j/2.0/log4j-api/apidocs/org/apache/logging/log4j/Logger.html) non ha getContext() metodo. – Boris
In Windows, essere consapevoli che è necessario utilizzare un URI con la log4j.configurationFile
proprietà
-Dlog4j.configurationFile=file://C:\path\to\log4j2.xml
Credo che la proprietà di sistema accetti un normale percorso file (relativo o assoluto) e un URI. –
- 1. Come configurare log4j 2.x puramente a livello di programmazione?
- 2. Log4J 2 configurazione di monitoraggio e bitwise confronto
- 3. Come specificare la posizione esatta di un assieme in un file di configurazione
- 4. configurazione log4j in EAR
- 5. logback specificare la posizione del file di configurazione di default come proprietà di sistema che non funziona
- 6. Come specificare la posizione con wget?
- 7. Come specificare la posizione del binario chromedriver
- 8. Mixing log4j 1.xe log4j 2
- 9. log4j errore di configurazione file detection
- 10. come specificare la nuova posizione di ambiente per conda creare
- 11. Come specificare un valore predefinito per una proprietà log4j
- 12. Alternative JSON (allo scopo di specificare la configurazione)?
- 13. NGINX cambia posizione di configurazione
- 14. Come specificare un file di configurazione per pylint in Windows?
- 15. Specificare la posizione della tela nell'oscillazione
- 16. Come ottenere l'elemento posizione di configurazione web?
- 17. Nella migrazione da log4j 1.2 a log4j 2, cosa fare con la classe DailyRollingFileAppender?
- 18. Qual'è la funzione inversa di x XOR (x/2)?
- 19. MongoDB - textSearchEnabled - specificare nel file di configurazione
- 20. programmazione disattivazione gancio di arresto in log4j 2
- 21. Specificare il fuso orario della data di log4j
- 22. “log4j: configurazione” deve corrispondere “(renderer ... .loggerFactory))?”
- 23. Nuget come posso specificare la posizione dei pacchetti?
- 24. Configurazione dei logger Log4j a livello di programmazione
- 25. Come specificare un tipo noto di WCF in configurazione generica?
- 26. log4j: quale file di configurazione è stato utilizzato?
- 27. Configurazione di Apache - Escludi posizione dall'autenticazione
- 28. Come modificare la posizione di grid.draw
- 29. Posizione di configurazione nel programma unix
- 30. impostazione file di configurazione ant javac posizione
Questo non è un modo semplice, perché Configurator (e altri) possono essere estesi (http://logging.apache.org/log4j/ 2.0/manual/extending.html) – mcoolive
Dove chiamo '' 'Configurator.initialize()' '' nel mio progetto? Lo sto chiedendo perché lo sto facendo in un blocco statico e Log4j sta registrando che non ha trovato il file prima dell'esecuzione del mio codice. –