it-swarm.com.de

Wie spezifiziere ich den Log4J 2.x Konfigurationsort?

Gibt es eine Möglichkeit, den Speicherort der Log4J 2.x log4j2.xml-Datei manuell anzugeben (wie DOMConfigurator in Log4J 1.x), ohne mit dem Klassenpfad und den Systemeigenschaften zu experimentieren?

14
Andrei Petrenko

Sie können die statische Methode #initialize(String contextName, ClassLoader loader, String configLocation) (siehe source here ) in org.Apache.logging.log4j.core.config.Configurator. Verwenden. (Sie können den Klassenlader mit null übergeben.)

Beachten Sie, dass diese Klasse nicht Teil der öffentlichen API ist, alsoIhr Code kann bei einer untergeordneten Version beschädigt werden.

Der Vollständigkeit halber können Sie auch den Speicherort der Konfigurationsdatei mit dieser Systemeigenschaft angeben:

-Dlog4j.configurationFile=path/to/log4j2.xml
18
Remko Popma

Beachten Sie in Windows, dass Sie einen URI mit der log4j.configurationFile-Eigenschaft verwenden müssen

-Dlog4j.configurationFile=file://C:\path\to\log4j2.xml
2
Glenn McElhoe

Die Verwendung von LoggerContext ermöglicht 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);

oder alternativ

LoggerContext.getContext().setConfigLocation(Java.net.URI);
1
Luigi

Wenn Sie log4j2 verwenden und Eigenschaften in der Datei log4j2.properties definiert sind, verwenden Sie diese.

-Dlog4j2.configurationFile = Datei: /home/atul/log4j2.properties

0
Atul

Sie können auch wie folgt initialisieren

ConfigurationSource source = new ConfigurationSource(new FileInputStream(log4j file Path));
XmlConfiguration xmlConfig = new XmlConfiguration(source);
Logger logger = (Logger) LogManager.getLogger(); 
logger.getContext().start(xmlConfig); 

In jeder Klasse kannst du eine Logger-Instanz wie folgt erhalten  

import org.Apache.logging.log4j.LogManager;
import org.Apache.logging.log4j.Logger;

private final Logger logger = LogManager.getLogger(ABC.class);
0
KalyanM