我试图告诉 Websphere Liberty 我的log4j2.xml
文件的位置,但它不起作用。
在我的文件jvm.options
中,我配置:
-Dlog4j.configurationFile=file:///${server.config.dir}/log4j2.xml
但看起来 Liberty 不理解 jvm.options 文件中的变量 ${server.config.dir}。该文件与server.xml
文件位于同一目录中。
如何为 Liberty 指定 log4j2.xml 位置?
我认为通过在服务器中创建库条目应该是可能的.xml例如:
<library id="log4jLib">
<folder dir="/opt/log4j2/config"/>
</library>
其中指定的目录包含 log4j2 属性或 XML 文件。
然后为您的应用程序指定一个类加载器,如下所示:
<application id="test" name="test" type="ear" location="test.ear">
<classloader commonLibraryRef="log4jLib" />
</application>
${server.config.dir}
变量是 Liberty 内置服务器配置变量之一,这些变量仅适用于服务器.xml(以及包含的配置(。
当您运行 Liberty 服务器时,user.dir
设置为与 ${server.config.dir}
相同的内容,因此您可以在 jvm.options 中将 log4j2.xml 文件的相对路径指定为:
-Dlog4j.configurationFile=log4j2.xml
为了自由,我做了以下事情;我有一个jvm.options文件,其中包含:
-Dlog4j.configurationFile=log4j2.xml
我将这两个文件(log4j2.xml和jvm.options(放在服务器配置中。即放置旅游服务器.xml等的地方:
usr/servers/<myserver>:
server.xml
jvm.options
log4j2.xml
这对我来说是
有几种方法可以在 WebSphere 中配置 log4j。除了假名提到的库条目方法之外,您可以简单地将 log4j2 配置文件放到全局库目录中
wlp/usr/servers//lib/global
如果在启动应用程序时上述位置存在文件,并且该应用程序未配置类装入器元素,则应用程序使用这些库。如果存在类装入器配置,那么除非显式引用了全局库,否则不会使用这些库。
您可以在此链接中找到有关全局库的更多详细信息
WebSphere Liberty 共享库