2012-02-14 44 views
1

我說在我的JBoss AS中的config目錄下面的配置專用記錄5.1

項中的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.But,但它沒有發生。

不能在應用程序戰爭中使用log4j.properties實現它。我的Jboss的配置方式是應該用jboss-log4j.xml文件覆蓋應用程序特定的log4j.properties。

任何幫助讚賞

回答

1

你絕對可以做到這一點。在$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"); 
} 
1

除了你提到的配置,你需要確保你的應用程序的戰爭不包括任何log4j.jar或公共-logging.jar文件。

+1

是的,這是prob..Now它的工作原理 – ASChakkalakal 2012-02-27 06:21:34