私はlog4jを使い始めましたので、やさしくしてください。しかし、ここで何が起きているのか分かりません。ファイルに正しくロギングしていますが、作成されたログのファイル名が間違っているようです。ここでLog4jは指定されたファイル名の代わりにlog4j.logにログします
は私のlog4jの設定です:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{HH:mm:ss,SSS}] [%-5p] (%t) [%c{1}] %m%n"/>
</layout>
</appender>
<appender name="file" class="org.apache.log4j.FileAppender">
<param name="File" value="log/messagecount.log" />
<param name="Append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{HH:mm:ss,SSS}] [%-5p] (%t) [%c{1}] - %m%n"/>
</layout>
</appender>
<root>
<level value="debug"/>
<appender-ref ref="file"/>
<!-- <appender-ref ref="rolling"/> -->
</root>
</log4j:configuration>
それは代わりにmessagecount.logファイルのログフォルダの下にlog4j.logファイルを作成します。 その値のプロパティは、私がそれがしていると思わないものですか?
これは私がロガーを初期化する方法である:
クラスレベルの変数:
private static Logger logger = Logger.getLogger(MessageCount.class);
そして、init関数:
private void initLogger() throws IOException {
Properties props = new Properties();
props.load(getClass().getResourceAsStream("/log4j.xml"));
PropertyConfigurator.configure(props);
logger.info("----------Logger init-----------") ;
// logger.debug("Sample debug message");
// logger.info("Sample info message");
// logger.warn("Sample warn message");
// logger.error("Sample error message");
// logger.fatal("Sample fatal message");
}
のlog4j.xml設定ファイルは、のルートにあります私のsrcフォルダ。
は、このファイルが有効なXMLでないためにlog4jを設定すると、エラーがスローされ、スタータのため、あなた
init関数は必要ありません。消して。アプリケーションのクラスパス(binフォルダまたはbuildフォルダに 'log4j.xml')を置くだけで、srcフォルダには見つかりません。アプリケーションは自動的にそれを見つけます。 – darioo