如何使用log4j2和slf4j运行WildFly-8.x

10

我想要用log4j2替换我的WildFly-8.x中的标准日志机制。

我的做法是将以下jar包作为模块添加:

log4j-api-2.3.jar
log4j-core-2.3.jar

并添加一个module.xml以通过服务器提供logger。

由于我已经在应用程序中使用slf4j,而且是通过Maven构建的,所以我决定将以下内容添加到我的pom.xml中,以构建我的EAR文件。

  <!-- versions are provided via private parent-pom -->
  <!-- slf4j-api -->
  <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <scope>provided</scope>
  </dependency>
  <!-- slf4j to log4j2, needed??? -->
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <scope>provided</scope>
  </dependency>
  <!-- log4j2 api, do I really need this??  -->
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <scope>provided</scope>
  </dependency>
  <!-- log4j2 api, do I really need this?? -->
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <scope>provided</scope>
  </dependency>

所以,还有几个问题需要解决:
1.) 我的 jboss-deployment-structure.xml 中是否需要附加依赖项,类似于以下内容?
[...]
<ear-subdeployment-isolated>false</ear-subdeployment-isolated>
<deployment>
  <dependencies>
    [...]
    <!-- name taken from my introduced module.xml -->
    <module name="org.apache.logging.log4j2" slot="main" export="true" />
    [...]
  </dependencies>
</deployment>

2.) 我该如何在standalone-*.xml中配置log4j2?我猜<loggers/><handlers/>只适用于内置系统?

3.) 我需要将上面的pom.xml片段指定到每个Maven模块中吗?几乎每个包含Java类的模块都需要记录日志。

还有一个小问题:

4.) 我该如何设置log4j2以压缩日志文件,就像使用log4j(1)-extras一样?


压缩文件很简单,只需将扩展名.zip或.gz添加到日志文件名中,它们将分别被压缩。 - alan7678
1个回答

2
我希望这个链接能帮到您,它包含了大多数AS的备选日志框架。
对于您的第四个问题:
如何设置log4j2来压缩日志文件,就像使用log4j(1)-extras一样?
您可以按照以下方式进行配置。
filePattern="logs/app-%d{MM-dd-yyyy}.log.gz" 

如果您正在使用RollingFile appender


1
非常感谢您的回答。不幸的是,它并不能完全满足我的需求,因为我真的想要在我的日志记录中实现“标记支持”。 - Robert Heine
1
以博客作为答案的参考不太好。那个网站目前已经无法访问。 - java.is.for.desktop

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接