Websphere Liberty:如何指定 log4j2 配置位置



我试图告诉 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 共享库

最新更新