我在 jboss AS 的 CONFIG 目录中添加了以下配置
jboss-log4j.xml 文件中的条目
<appender name="YYY" class="org.apache.log4j.FileAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"></errorHandler>
<param name="Append" value="false"/>
<param name="File" value="${jboss.server.home.dir}/log/app1.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
</layout>
</appender>
<category name="com.XXX">
<priority value="INFO" />
<appender-ref ref="YYY"></appender-ref>
</category>
我已经看到 app1.log 在 JBoss 启动时创建。我的应用程序 war 文件中没有特定于应用程序的 log4j.properties 或 log4j.xml 文件。我想要的只是 com.XXX 中的类应该记录到 app1 .log.但它没有发生。
如果我的应用程序 war 中没有 log4j.properties,我不能实现它吗?我的 Jboss 配置方式是应用程序特定的 log4j.properties 应使用 jboss-log4j.xml 文件覆盖。
感谢任何帮助
最佳答案
你绝对可以做到这一点。在 $JBOSS_HOME/server/$PROFILE/conf/jboss-log4j.xml
中,进行以下修改:-
<!-- define the appender -->
<appender name="YYY" class="org.apache.log4j.RollingFileAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="500KB"/>
<param name="MaxBackupIndex" value="1"/>
<param name="File" value="${jboss.server.log.dir}/app1.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{MM/dd/yy HH:mm:ss,SSS} %-5p [%c{1}] %m%n"/>
</layout>
</appender>
<!-- add the category for your classes with package name com.XXX for ERROR level -->
<category name="com.XXX">
<priority value="ERROR"/>
<appender-ref ref="YYY"/>
</category>
您甚至不需要重新启动 JBoss 实例。请注意 $jboss.server.log.dir ($JBOSS_HOME/server/$PROFILE/log) 作为 run.sh 中的 JVM 参数传递或作为 run.sh 的命令行参数传递。
如果您没有看到任何输出,则可能是您的应用程序没有正确实例化 log4j,或者您的包名称不同,或者您访问了错误的应用程序,或者只是您没有在代码执行中访问日志语句。确保您的类已正确实例化 log4j 并使用正确的包名称。例如:
package com.XXX;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
public class MyServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static Logger log = Logger.getLogger(MyServlet.class);
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
log.error("My Test Log Message");
}
关于java - Jboss 5.1 中的应用程序特定日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9272170/