And*_*nko 16 java configuration logging log4j log4j2
有没有办法log4j2.xml手动指定Log4J 2.x 文件位置(如DOMConfigurator在Log4J 1.x中),而不会弄乱类路径和系统属性?
Rem*_*pma 19
您可以使用静态方法#initialize(String contextName, ClassLoader loader, String configLocation)(请参阅此处的源代码)org.apache.logging.log4j.core.config.Configurator.(您可以为类加载器传递null.)
请注意,此类不是公共API的一部分,因此您的代码可能会破坏任何次要版本.
为了完整性,您还可以使用此系统属性指定配置文件的位置:
-Dlog4j.configurationFile=path/to/log4j2.xml
Run Code Online (Sandbox Code Playgroud)
小智 10
对于 log4j 版本 2.12.1,您可以在此处找到如何重新配置 log4j2 。
下面是一个例子
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.LoggerContext;
File file = new File("C:\\Path for Windows OS\\yourConfig.xml");
LoggerContext context = (LoggerContext) LogManager.getContext(false);
context.setConfigLocation(file.toURI());
Logger log = LogManager.getLogger(YourClass.class);
Run Code Online (Sandbox Code Playgroud)
在我看来,配置 log4j2 的方式随着新版本的发布而改变,所以你应该意识到这一点。
小智 9
如果您使用的是 log4j2 并且属性在 log4j2.properties 文件中定义,则使用此文件。
-Dlog4j2.configurationFile=文件:/home/atul/log4j2.properties
在 Windows 中,请注意您需要将 URI 与log4j.configurationFile属性一起使用
-Dlog4j.configurationFile=file://C:\path\to\log4j2.xml
Run Code Online (Sandbox Code Playgroud)