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

Websphere Liberty: How to specify log4j2 configuration location?

我试图告诉 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 位置?

我认为应该可以通过在 server.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 内置服务器配置变量之一,这些仅适用于 server.xml(以及包含的配置)。

当你 运行 一个 Liberty 服务器时,user.dir 被设置为与 ${server.config.dir} 相同的东西,所以你可以只指定 log4j2.xml 的相对路径jvm.options 中的文件为:

-Dlog4j.configurationFile=log4j2.xml

有几种方法可以在 WebSphere 中配置 log4j。除了pseudonym提到的库入口方法,你可以简单地将log4j2配置文件拖放到

的全局库目录中

wlp/usr/servers//lib/global

如果应用程序启动时上述位置存在文件,并且该应用程序未配置 classloader 元素,则该应用程序将使用这些库。如果存在 class 加载程序配置,除非显式引用全局库,否则不会使用这些库。

您可以在此 link

中找到有关全局库的更多详细信息

WebSphere Liberty Shared Libraries

对于 Liberty,我执行以下操作; 我有一个 jvm.options 文件包含:

-Dlog4j.configurationFile=log4j2.xml

我将两个文件(log4j2.xml 和 jvm.options)都放在服务器配置中。 即旅游 server.xml 等的位置:

usr/servers/<myserver>:
 server.xml
 jvm.options
 log4j2.xml

这对我有用。