2016-04-08 17 views
0

私はこの単純なMain.javaなぜlog4jはJavaアプリケーションでログファイルを作成しますが、Webアプリケーションでは作成しませんか?

package playground; 

import org.apache.log4j.Logger; 

public class Main { 

    private final static Logger LOGGER = Logger.getLogger(Main.class.getName()); 

    public static void main(String[] args) { 

     LOGGER.info("Running main .."); 

     LOGGER.debug("Reading args:"); 

     for (String arg : args) { 
      LOGGER.debug(" " + arg); 
     }  

     LOGGER.info("All done."); 
    } 

} 

を使用してこの構成

# Define the root logger with appender file 
log4j.rootLogger = DEBUG, CONSOLE, FILE 

# CONSOLE appender 
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 
log4j.appender.CONSOLE.layout.conversionPattern=%m%n 
log4j.appender.CONSOLE.Threshold=debug 

# FILE appender 
log4j.appender.FILE=org.apache.log4j.FileAppender 
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout 
log4j.appender.FILE.layout.conversionPattern=%m%n 

# Set the name of the file 
log4j.appender.FILE.File=/home/user/annotator-log.out 

# Set the immediate flush to true (default) 
log4j.appender.FILE.ImmediateFlush=true 

# Set the threshold to debug mode 
log4j.appender.FILE.Threshold=info 

# Set the append to false, overwrite 
log4j.appender.FILE.Append=false 

をテストして、それが動作します。ログがコンソールに出力されますと、私は私が唯一のコンソールに出力を見ることができますが、ログファイルが作成され取得されていない私のWebアプリケーションへ.propertiesファイルを置けばファイルが、しかし/home/user/annotator-log.out

で作成されます。

この理由は何ですか?

+0

ここでは、.propertiesファイルを配置しています。あなたのweb.xmlに、あなたのWebアプリケーションがlog4j.propertieファイルを使用する必要があると言いますか? – LearningPhase

答えて

0

これをweb.xmlに入れてみてください。

<context-param> 
     <param-name>log4j-config-location</param-name> 
     <param-value>WEB-INF/log4j.properties</param-value> 
    </context-param> 
+0

log4j.propertiesがWeb-INFフォルダ – LearningPhase

+0

の下にあることを確認してください。ファイルがクラスパスで利用可能であれば十分だと思いましたが、Webアプリケーションのどこかに置くのは当然のことです。 – displayname

0

プログラムによるソリューション:

String log4jPropertiesFilePath = ...; 
org.apache.log4j.PropertyConfigurator.configure(log4jPropertiesFilePath); 

我々は実行時にのみファイルの場所を知ることができたときに我々はそれを使用!

関連する問題