我們有一堆項目被部署在同一個Jboss應用程序中。服務器。每個項目在其WEB-INF目錄中都有自己的log4j.properties。在同一個應用程序中爲多個項目配置log4j。服務器
的想法是對每一個項目都有自己的日誌文件到它寫入其日誌。
如何可以做到這一點的任何想法。
我們有一堆項目被部署在同一個Jboss應用程序中。服務器。每個項目在其WEB-INF目錄中都有自己的log4j.properties。在同一個應用程序中爲多個項目配置log4j。服務器
的想法是對每一個項目都有自己的日誌文件到它寫入其日誌。
如何可以做到這一點的任何想法。
首先你不提你使用JBoss的版本。您必須記住,AS7之前的JBoss版本包含自己的log4j版本(庫和配置文件:conf/jboss-log4j.xml),因此默認情況下,JBoss將忽略每個版本中的log4j.properties文件你的項目。
這就是說,你需要配置一個日誌文件爲每個應用程序兩種方法:
對於第一種方法,您必須在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有關此方法的更多信息。
感謝答案toni。我已經嘗試了第二種方法,並陷入了需要記錄多個項目正在使用的依賴類的地步。 http://stackoverflow.com/questions/14858615/cross-logging-issue-for-2-projects-using-same-dependency – user1717230 2013-02-14 14:20:27
你正在使用哪個版本的jboss? – gYanI 2013-02-13 07:06:11
如果您正在使用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