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

web*_*dev 5 logging jboss

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

kos*_*tja 5

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

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

<profile>
    <subsystem xmlns="urn:jboss:domain:logging:1.1">
Run Code Online (Sandbox Code Playgroud)

它带有一个工作示例配置.请注意,通常所谓的appender*handler在配置中标题,如console-handlerperiodic-rotating-file-handler.

在这里您可以找到有关日志记录配置的一些建议.

编辑:一些澄清.

换句话说 - 没有什么理由可以让你更喜欢在你选择的框架上使用内置的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>
Run Code Online (Sandbox Code Playgroud)