JBoss AS7:使用logback进行日志记录



我想使用slf4j+logback在JBossAS7上进行日志记录。

此外,我还必须解决以下要求:

  • 我需要在多个部署的应用程序/ear中共享一个logback配置/上下文
  • 我需要在运行时更改logback配置,而不需要重新部署/重新启动ear
  • 使(尽可能多的)JBoss服务器的日志条目在我的日志配置中可见(例如部署日志等)

我现在知道的是,JBoss使用了自己的日志记录层。由于架构原因,我不能使用它。我想坚持只用SLF4J作为日志api和Logback作为框架。

我很乐意得到一些提示,如何解决这个问题。

问候,

Lars

我能想到的唯一方法是编写一个自定义处理程序。虽然目前没有很好的文档,但您可以创建自定义java.util.logging.Handler。在某种意义上,您可以围绕logback的配置编写包装器。我想他们有一个BasicConfigurator或类似的东西。

注册一个自定义处理程序,如下所示:

<custom-handler name="logbackHandler" class="org.jboss.LogbackHandler" module="org.jboss.logback">
   <level name="DEBUG"/>
   <properties>
       <property name="nameOfASetterMethod" value="the value to set" />
   </properties>
</custom-handler>
<root-logger>
    <level name="INFO"/>
    <handlers>
        <handler name="CONSOLE"/>
        <handler name="FILE"/>
        <handler name="logbackHandler"/>
    </handlers>
</root-logger>

也就是说,可能没有必要这样做。应用程序服务器记录器将记录消息,即使您通过不同的服务器进行日志记录。如果你想写入你自己的文件,你可以设置不同的文件处理程序。

我意识到登录JBoss AS7真的需要一些更好的文档。当我找到时间的时候,我确实计划更新它:-)而且我真的只需要腾出时间。

我非常肯定,您可以在JBoss中为自己的应用程序使用slf4j+logback,完全绕过它的日志记录。JBoss将继续将所有自己的日志消息记录到自己的日志中,但是您的软件根本不会连接到JBoss -logging,而是拥有自己的日志。我在JBoss 6下尝试过这个;我们还没有尝试过JBoss 7,所以情况可能会有所不同,但我对此表示怀疑。只要确保slf4j和logback jar在应用程序的类路径中,就可以了。

如果您搜索可用的System属性,您将找到一些jboss。*属性可能在您的logback配置中用于查找放置日志文件的位置。

我个人希望JBoss切换到使用slf4j。

最新更新