2013-02-12 102 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

相關問題