鑑於我在嘗試通過log4j.xml
應用外部log4j配置時遇到問題,我現在有興趣採用關於將資源文件加載到Java項目的約定。有關將資源文件加載到Java項目的約定
儘管代碼能夠顯示沒有警告或錯誤的消息,但我懷疑配置並未真正應用,因爲更改ConversionPattern
對控制檯輸出沒有任何影響。
Program.java
package the.project.path;
import java.io.File;
import org.apache.log4j.Logger;
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.PropertyConfigurator;
class Program {
static final Logger logger = Logger.getLogger("SampleLogger");
static final File config = new File("the.project.path/conf/log4j.xml");
static final String message = "The quick brown fox jumps over the lazy dog.";
public static void main(String[] args) {
if (config.exists()) {
PropertyConfigurator.configure(config.getPath());
} else {
BasicConfigurator.configure();
}
try {
logger.debug(message);
logger.info(message);
logger.warn(message);
logger.error(message);
logger.fatal(message);
} catch (Exception exception) {
System.out.println(exception.toString());
}
}
}
的log4j.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="SampleConsoleAppender" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<!--
TTCC is a message format used by log4j.
TTCC is acronym for Time Thread Category Component.
It uses the following pattern: %r [%t] %-5p %c %x - %m%n
-->
<param name="ConversionPattern" value="[%t] [%-5p] - %m%n" />
</layout>
</appender>
<root>
<appender-ref ref="SampleConsoleAppender" />
</root>
</log4j:configuration>
任何意見將非常感激。非常感謝。
感謝您的評論,但不幸的是您的代碼段不能編譯。 –
這是因爲它只是一個片段,而不是一個完整的方法。 LOG引用是對Logger變量的引用,我相信當我從自己的代碼中提取它時,可以刪除多餘的支架。 – Crollster
解決這個問題的細節是使用'.configureAndWatch()'而不是'.configure()',即使使用'PropertyConfigurator'也能工作。謝謝! –