gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 04:53:40 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com