これは、log4j のテストに使用した私のStudentクラスです。
public class Student{
private static final Logger logger = Logger.getLogger(Student.class.getName());
public Student() {
PropertyConfigurator.configure("log4j.properties");
}
public static void main(String args[]){
logger.log(Level.INFO, "My log4j Test");
}
}
これは私のlog4j.propertiesファイルです
log4j.rootLogger=INFO,Appender1,Appender2
log4j.appender.Appender1=org.apache.log4j.ConsoleAppender
log4j.appender.Appender2=org.apache.log4j.RollingFileAppender
log4j.appender.Appender2.File=C:/Log4j/MyLogExample.log
log4j.appender.Appender1.layout=org.apache.log4j.PatternLayout`
log4j.appender.Appender1.Target=System.out`
log4j.appender.Appender1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n`
log4j.appender.Appender2.layout=org.apache.log4j.PatternLayout`
log4j.appender.Appender2.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n`
log4j.appender.Appender2.MaxFileSize=50KB`
log4j.appender.Appender2.MaxBackupIndex=10`
Eclipse を使用してこのプログラムを実行すると、MyLogExample.logファイルが作成されます。しかし、jar ファイルを作成し、コマンド プロンプトを使用して実行した後、ログ ファイルが作成されません。
コンソールにこのエラーが表示されます。
log4j:ERROR Could not read configuration file [log4j.properties].
java.io.FileNotFoundException: log4j.properties (The system cannot find the file specified)
次のコード例を追加すると、コマンド プロンプトで jar ファイルを実行してもログ ファイルが作成されます。
PropertyConfigurator.configure("C:\\eclipeworkspace\\Log4jTest\\log4j.properties");
正確なパスではなく相対パスを指定するにはどうすればよいですか?