如何指定Log4J 2.x配置位置?
有没有办法手动指定Log4J 2.x log4j2.xml
文件位置(如Log4J 1.x中的DOMConfigurator
),而不会弄乱类路径和系统属性?
您可以在org.apache.logging.log4j.core.config.Configurator
使用静态方法#initialize(String contextName, ClassLoader loader, String configLocation)
(请参阅此处的 source)。 (您可以为类加载器传递null。)
请注意,此类不是公共API的一部分,因此您的代码可能会破坏任何次要版本 。
为了完整性,您还可以使用此系统属性指定配置文件的位置:
-Dlog4j.configurationFile=path/to/log4j2.xml
在Windows中,请注意您需要使用带有log4j.configurationFile
属性的URI
-Dlog4j.configurationFile=file://C:\path\to\log4j2.xml
使用LoggerContext允许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);
或者
LoggerContext.getContext().setConfigLocation(java.net.URI);
您也可以像下面那样进行初始化
ConfigurationSource source = new ConfigurationSource(new FileInputStream(log4j file Path)); XmlConfiguration xmlConfig = new XmlConfiguration(source); Logger logger = (Logger) LogManager.getLogger(); logger.getContext().start(xmlConfig);
在每个类中,您可以获得如下的logger实例
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; private final Logger logger = LogManager.getLogger(ABC.class);