2013-05-23 13 views

risposta

15

È 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 
+0

Questo non è un modo semplice, perché Configurator (e altri) possono essere estesi (http://logging.apache.org/log4j/ 2.0/manual/extending.html) – mcoolive

+1

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. –

1

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); 
0

è 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); 
+0

[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

1

In Windows, essere consapevoli che è necessario utilizzare un URI con la log4j.configurationFile proprietà

-Dlog4j.configurationFile=file://C:\path\to\log4j2.xml 
+0

Credo che la proprietà di sistema accetti un normale percorso file (relativo o assoluto) e un URI. –

Problemi correlati