java - Jboss 5.1 中的应用程序特定日志记录

标签 java jboss log4j logging jboss5.x

我在 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/

相关文章:

java - 如何维护一组经常变化的共享库的应用程序?

java - 如何使用 eclipse 和 jboss 在 java 中制作 Facebook 应用程序?

java - Tomcat 中的 Log4j2

java - 将自定义http header 添加到Spring Boot WS调用(wstemplate)

java - 如何向 Hibernate 过滤器添加大于/小于

java - 多波段图像光栅到 RGB

jboss - 事件锁定未按预期工作

java - 有没有办法在使用特定记录器时触发堆栈跟踪?

java - 使用外部配置文件配置log4j日志级别

java - 解析 URLConnection 中的所有数据后,打破异步任务中的 do while 循环