在同一个应用程序中为多个项目配置log4j。服务器
我们有一堆项目被部署在同一个Jboss应用程序中。服务器。每个项目在其WEB-INF目录中都有自己的log4j.properties。在同一个应用程序中为多个项目配置log4j。服务器
的想法是对每一个项目都有自己的日志文件到它写入其日志。
如何可以做到这一点的任何想法。
首先你不提你使用JBoss的版本。您必须记住,AS7之前的JBoss版本包含自己的log4j版本(库和配置文件:conf/jboss-log4j.xml),因此默认情况下,JBoss将忽略每个版本中的log4j.properties文件你的项目。
这就是说,你需要配置一个日志文件为每个应用程序两种方法:
- 集中的方式:将其配置在JBoss中,通过 的conf /的jboss-log4j.xml文件。这样你就不需要修改应用程序 ,或让他们拿自己的 的log4j库(你必须包括他们在耳朵/战争),而不是 Jboss里的人
- 修改应用程序。
对于第一种方法,您必须在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