2012-02-14 4 views
1

でアプリケーション固有のログ私は私のJBoss ASのconfigディレクトリに</p> <p>エントリを以下の構成を追加したJBossの5.1

<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上で作成されて見てきましたアプリケーション固有のlog4j.propertiesまたはlog4j.xmlファイルがアプリケーションWARファイル内にありません。必要なのは、com.XXXのクラスがapp1.logにログする必要があります。しかし、起こっていないことです。

私はアプリケーションの戦争でlog4j.propertiesを持っていることでそれを達成しました。 My Jbossは、アプリケーション固有のlog4j.propertiesをjboss-log4j.xmlファイルで上書きするように設定されています。

助けを歓迎します

答えて

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

関連する問題