为什么我应该使用Jboss的日志框架as-7而不是log4j第三方api进行日志记录?

时间:2012-11-12 05:59:05

标签: logging jboss

我正在尝试将我的代码从Jboss 5.1更新到Jboss 7,我发现jboss-as-7.1有自己的日志框架。我想知道在log4j上使用jboss自己的日志框架的主要区别和优点。我还需要一个如何在此框架中使用appender的示例。

1 个答案:

答案 0 :(得分:5)

JBoss 7的内置日志记录模块基于Java Util Logging。使用它的主要(唯一?)原因是它已经集成,并且它不像人们希望推出自己的解决方案那样微不足道。如果您不想使用JUL API,则可以使用提供的SLF API。

您可以在standalone.xml等实例配置文件中配置appender。查找日志子系统配置:

<profile>
    <subsystem xmlns="urn:jboss:domain:logging:1.1">

它带有一个工作示例配置。请注意,通常称为appender的内容在配置中标注为*handler,例如console-handlerperiodic-rotating-file-handler

Here您可以找到有关日志配置的一些建议。

编辑:一些澄清。

换句话说 - 没有真正的理由为什么你更喜欢在你选择的框架上使用内置的jboss日志记录。唯一的事情是配置你自己的框架需要额外的努力,可能仍然失败(我花了一些时间弄清楚如何配置我的JBoss使用logback - 最后放弃)。所以我没有资格告诉你如何保持你的log4j实现:)

您可以通过“本机”JUL API或SLF4J桥接器使用jboss日志记录。两者都包含在/modules目录中,因此您不需要在运行时包含任何addidtional库。只需在您的代码中请求您首选的Logger,就可以了:

SLF:LoggerFactory.getLogger(...);

JUL:Logger.getLogger(...);

为了从JUL切换到SLF,我唯一需要做的就是为编译代码提供SLF API - 这是maven配置:

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>1.6.1</version>
  <scope>provided</scope>
</dependency>