2013-02-12 65 views
0

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

的想法是对每一个项目都有自己的日志文件到它写入其日志。

如何可以做到这一点的任何想法。

+0

你正在使用哪个版本的jboss? – gYanI 2013-02-13 07:06:11

+0

如果您正在使用JBoss的7.x的,那么你可以试试这个http://stackoverflow.com/questions/14182257/using-applications-log4j-configuration-under-jboss-7-1-1/14337990#14337990 – gYanI 2013-02-13 07:07:42

回答

0

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

这就是说,你需要配置一个日志文件为每个应用程序两种方法:

  1. 集中的方式:将其配置在JBoss中,通过 的conf /的jboss-log4j.xml文件。这样你就不需要修改应用程序 ,或让他们拿自己的 的log4j库(你必须包括他们在耳朵/战争),而不是 Jboss里的人
  2. 修改应用程序。

对于第一种方法,您必须在conf/jboss-log4j.xml文件中为每个应用程序定义appender,然后为应用程序包定义appender。例如,要配置调用的应用程序日志文件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有关此方法的更多信息。

+0

感谢答案toni。我已经尝试了第二种方法,并陷入了需要记录多个项目正在使用的依赖类的地步。 http://stackoverflow.com/questions/14858615/cross-logging-issue-for-2-projects-using-same-dependency – user1717230 2013-02-14 14:20:27

相关问题