【问题标题】:Confuguring log4j for multiple projects in the same app. server在同一个应用程序中为多个项目配置 log4j。服务器
【发布时间】:2013-01-28 08:15:03
【问题描述】:

我们有很多项目部署在同一个 Jboss 应用程序中。服务器。每个项目在其 WEB-INF 目录中都有自己的 log4j.properties。

这个想法是让每个项目都有自己的日志文件,将其日志写入其中。

关于如何实现这一点的任何想法。

【问题讨论】:

标签: java jakarta-ee logging jboss log4j


【解决方案1】:

首先,您没有提及您正在使用的 JBoss 版本。您必须记住,AS7 之前的 JBoss 版本包含其自己的 log4j 版本(库和配置文件:conf/jboss-log4j.xml),因此默认情况下 JBoss 将忽略您在每个版本中的 log4j.properties 文件你的项目。

也就是说,您有两种方法可以为每个应用程序配置日志文件:

  1. 集中方式:在Jboss中配置,通过 conf/jboss-log4j.xml。这样你就不需要修改你的 应用程序,或
  2. 修改您的应用程序,使它们拥有自己的 log4j 库(您必须将它们包含在 ear/war 中),而不是 Jboss 的。

对于第一种方法,您必须在 conf/jboss-log4j.xml 文件中为每个应用程序定义一个附加程序,然后为应用程序包定义类别。例如,要为名为 app1.war 的应用程序配置日志文件,其中类位于名为 com.foo.app1 的包中,您必须添加:

   <appender name="APP1_APPENDER" class="org.jboss.logging.appender.DailyRollingFileAppender">
      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
      <param name="File" value="${jboss.server.log.dir}/app1.log"/>
      <param name="Append" value="true"/>
      <!-- Rollover at midnight each day -->
      <param name="DatePattern" value="'.'yyyy-MM-dd"/>    
      <layout class="org.apache.log4j.PatternLayout">
         <!-- The default pattern: Date Priority [Category] (Thread) Message\n -->
         <param name="ConversionPattern" value="%d %-5p [%c] (%t) %m%n"/>
      </layout>
   </appender>
   ...
   ...
   <category name="com.foo.app1" additivity="true">
      <priority value="INFO"/>
      <appender-ref ref="APP1_APPENDER"/>
   </category>

您必须分别为要为其定义日志文件的每个项目添加一组自定义块,例如此块。

如果您更喜欢第二种方法,如上所述,您必须在每个项目中包含 log4j 库并隔离每个应用程序,以便它获取应用程序中包含的库而不是 JBoss 中的库。 Look at section 10.3.7 of the Jboss logging file 了解有关此方法的更多信息。

【讨论】:

猜你喜欢
  • 2014-03-21
  • 2014-08-08
  • 1970-01-01
  • 1970-01-01
  • 2019-10-29
  • 1970-01-01
  • 2014-12-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多