Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何发现加载的log4j2配置的完整路径?_Java_Log4j2 - Fatal编程技术网

Java 如何发现加载的log4j2配置的完整路径?

Java 如何发现加载的log4j2配置的完整路径?,java,log4j2,Java,Log4j2,我的应用服务器正在加载log4j2.properties文件,我找不到它在哪里。我想知道这个conf文件的完整路径 如果使用选项-Dlog4j.debug启动jvm(如中所述),我可以轻松地让log4j2显示搜索到的配置文件,但它不会显示完整的路径 通过调试参数,我得到以下输出: [err] DEBUG StatusLogger Using configurationFactory org.apache.logging.log4j.core.config.ConfigurationFactory

我的应用服务器正在加载log4j2.properties文件,我找不到它在哪里。我想知道这个conf文件的完整路径

如果使用选项
-Dlog4j.debug
启动jvm(如中所述),我可以轻松地让log4j2显示搜索到的配置文件,但它不会显示完整的路径

通过调试参数,我得到以下输出:

[err] DEBUG StatusLogger Using configurationFactory org.apache.logging.log4j.core.config.ConfigurationFactory$Factory@239c2809
[err] TRACE StatusLogger Trying to find [log4j2-testago service.properties] using context class loader com.ibm.ws.classloading.internal.ThreadContextClassLoader@834b414.
[err] TRACE StatusLogger Trying to find [log4j2-testago service.properties] using com.ibm.ws.classloading.internal.AppClassLoader@8bc0851 class loader.
[err] TRACE StatusLogger Trying to find [log4j2-testago service.properties] using com.ibm.ws.classloading.internal.ThreadContextClassLoader@834b414 class loader.
[err] TRACE StatusLogger Trying to find [log4j2-testago service.properties] using ClassLoader.getSystemResource().
[err] TRACE StatusLogger Trying to find [log4j2-testago service.yml] using context class loader com.ibm.ws.classloading.internal.ThreadContextClassLoader@834b414.
[err] TRACE StatusLogger Trying to find [log4j2-testago service.yml] using com.ibm.ws.classloading.internal.AppClassLoader@8bc0851 class loader.
[err] TRACE StatusLogger Trying to find [log4j2-testago service.yml] using com.ibm.ws.classloading.internal.ThreadContextClassLoader@834b414 class loader.
[err] TRACE StatusLogger Trying to find [log4j2-testago service.yml] using ClassLoader.getSystemResource().
[err] TRACE StatusLogger Trying to find [log4j2-testago service.yaml] using context class loader com.ibm.ws.classloading.internal.ThreadContextClassLoader@834b414.
[err] TRACE StatusLogger Trying to find [log4j2-testago service.yaml] using com.ibm.ws.classloading.internal.AppClassLoader@8bc0851 class loader.
[err] TRACE StatusLogger Trying to find [log4j2-testago service.yaml] using com.ibm.ws.classloading.internal.ThreadContextClassLoader@834b414 class loader.
[err] TRACE StatusLogger Trying to find [log4j2-testago service.yaml] using ClassLoader.getSystemResource().
[err] TRACE StatusLogger Trying to find [log4j2-testago service.json] using context class loader com.ibm.ws.classloading.internal.ThreadContextClassLoader@834b414.
[err] TRACE StatusLogger Trying to find [log4j2-testago service.json] using com.ibm.ws.classloading.internal.AppClassLoader@8bc0851 class loader.
[err] TRACE StatusLogger Trying to find [log4j2-testago service.json] using com.ibm.ws.classloading.internal.ThreadContextClassLoader@834b414 class loader.
[err] TRACE StatusLogger Trying to find [log4j2-testago service.json] using ClassLoader.getSystemResource().
[err] TRACE StatusLogger Trying to find [log4j2-testago service.jsn] using context class loader com.ibm.ws.classloading.internal.ThreadContextClassLoader@834b414.
[err] TRACE StatusLogger Trying to find [log4j2-testago service.jsn] using com.ibm.ws.classloading.internal.AppClassLoader@8bc0851 class loader.
[err] TRACE StatusLogger Trying to find [log4j2-testago service.jsn] using com.ibm.ws.classloading.internal.ThreadContextClassLoader@834b414 class loader.
[err] TRACE StatusLogger Trying to find [log4j2-testago service.jsn] using ClassLoader.getSystemResource().
[err] TRACE StatusLogger Trying to find [log4j2-testago service.xml] using context class loader com.ibm.ws.classloading.internal.ThreadContextClassLoader@834b414.
[err] TRACE StatusLogger Trying to find [log4j2-testago service.xml] using com.ibm.ws.classloading.internal.AppClassLoader@8bc0851 class loader.
[err] TRACE StatusLogger Trying to find [log4j2-testago service.xml] using com.ibm.ws.classloading.internal.ThreadContextClassLoader@834b414 class loader.
[err] TRACE StatusLogger Trying to find [log4j2-testago service.xml] using ClassLoader.getSystemResource().
[err] TRACE StatusLogger Trying to find [log4j2-test.properties] using context class loader com.ibm.ws.classloading.internal.ThreadContextClassLoader@834b414.
[err] TRACE StatusLogger Trying to find [log4j2-test.properties] using com.ibm.ws.classloading.internal.AppClassLoader@8bc0851 class loader.
[err] TRACE StatusLogger Trying to find [log4j2-test.properties] using com.ibm.ws.classloading.internal.ThreadContextClassLoader@834b414 class loader.
[err] TRACE StatusLogger Trying to find [log4j2-test.properties] using ClassLoader.getSystemResource().
[err] TRACE StatusLogger Trying to find [log4j2-test.yml] using context class loader com.ibm.ws.classloading.internal.ThreadContextClassLoader@834b414.
[err] TRACE StatusLogger Trying to find [log4j2-test.yml] using com.ibm.ws.classloading.internal.AppClassLoader@8bc0851 class loader.
[err] TRACE StatusLogger Trying to find [log4j2-test.yml] using com.ibm.ws.classloading.internal.ThreadContextClassLoader@834b414 class loader.
[err] TRACE StatusLogger Trying to find [log4j2-test.yml] using ClassLoader.getSystemResource().
[err] TRACE StatusLogger Trying to find [log4j2-test.yaml] using context class loader com.ibm.ws.classloading.internal.ThreadContextClassLoader@834b414.
[err] TRACE StatusLogger Trying to find [log4j2-test.yaml] using com.ibm.ws.classloading.internal.AppClassLoader@8bc0851 class loader.
[err] TRACE StatusLogger Trying to find [log4j2-test.yaml] using com.ibm.ws.classloading.internal.ThreadContextClassLoader@834b414 class loader.
[err] TRACE StatusLogger Trying to find [log4j2-test.yaml] using ClassLoader.getSystemResource().
[err] TRACE StatusLogger Trying to find [log4j2-test.json] using context class loader com.ibm.ws.classloading.internal.ThreadContextClassLoader@834b414.
[err] TRACE StatusLogger Trying to find [log4j2-test.json] using com.ibm.ws.classloading.internal.AppClassLoader@8bc0851 class loader.
[err] TRACE StatusLogger Trying to find [log4j2-test.json] using com.ibm.ws.classloading.internal.ThreadContextClassLoader@834b414 class loader.
[err] TRACE StatusLogger Trying to find [log4j2-test.json] using ClassLoader.getSystemResource().
[err] TRACE StatusLogger Trying to find [log4j2-test.jsn] using context class loader com.ibm.ws.classloading.internal.ThreadContextClassLoader@834b414.
[err] TRACE StatusLogger Trying to find [log4j2-test.jsn] using com.ibm.ws.classloading.internal.AppClassLoader@8bc0851 class loader.
[err] TRACE StatusLogger Trying to find [log4j2-test.jsn] using com.ibm.ws.classloading.internal.ThreadContextClassLoader@834b414 class loader.
[err] TRACE StatusLogger Trying to find [log4j2-test.jsn] using ClassLoader.getSystemResource().
[err] TRACE StatusLogger Trying to find [log4j2-test.xml] using context class loader com.ibm.ws.classloading.internal.ThreadContextClassLoader@834b414.

由于最后显示的文件名是
log4j2 test.xml
,因此这是加载的文件。问题是,如果我将文件命名为
log4j2.xml
,则会在其前面加载另一个名为
log4j2.properties
的配置。我找不到这个文件在哪里!必须有一种方法来发现它从何处加载。

在您的程序中,您可以执行以下操作:

URL url = org.apache.logging.log4j.LogManager.class.getResource("/log4j2.properties");
System.out.println(url);

它应该使用
LogManager
类的类加载器在类路径的根目录下显示“log4j2.properties”文件的位置

在资源文件夹中添加log4j2.xml文件时,它将被类路径上的log4j2.properties替换。正确吗?运行测试时会发生此问题?请告诉我如果尝试会发生什么:
-Dlog4j.configurationFile=file:/path/to/file/log4j2.xml
@vladwoguer如果我将上面加载的文件从log4j2-test.xml重命名为log4j2.xml,则会加载log4j2.properties而不是我的文件。我刚刚选择了一个在.properties文件之前加载的文件名。是否检查了其中一个JAR是否包含log4j2.properties?