我的 log4j 沒有記錄任何日志檔案。我不確定這是否是內部設定log4j.properties或此檔案位置的問題。
我構建專案的方式:
git clone https://github.com/spring-guides/gs-maven.git
然后修改:.\initial\pom.xml并添加了對log4j:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-bom</artifactId>
<version>2.17.2</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</dependency>
</dependencies>
就在之前:
</project>
添加日志命令.\initial\src\main\java\hello\HelloWorld.java如下:
package hello;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class HelloWorld {
private static Logger logger = LogManager.getLogger(HelloWorld.class);
public static void main(String[] args) {
logger.error("Application status : {} ", "start");
Greeter greeter = new Greeter();
System.out.println(greeter.sayHello());
logger.error("Application status : {} ", "terminated");
}
}
然后添加log4j.properties:
appender.stdout.type = Console
# ... other appender properties
appender.file.type = File
# ... other appender properties
logger.app = INFO, stdout, file
# logger.app.name = com.example.app
# is equivalent to:
# appender.stdout.type = Console
# appender.stdout.name = stdout
# ...
appender.file.type = File
appender.file.name = mylog
# ...
# logger.app.name = com.example.app
logger.app.level = INFO
logger.app.appenderRef.$1.ref = stdout
logger.app.appenderRef.$2.ref = file
我一直將此檔案的位置更改為
.\initial\log4j.properties
.\initial\target\log4j.properties
.\initial\target\classes\log4j.properties
.\initial\target\classes\hello\log4j.properties
他們都沒有作業過。我沒有看到mylog或任何其他日志檔案。
我運行專案的方式如下:
cd initial
mvn compile
mvn package
java -jar target/gs-maven-0.1.0.jar
我應該如何解決這個問題?
uj5u.com熱心網友回復:
您的配置存在一些問題:
- 正如Gopinath所說,組態檔應該在
src/main/resources. Maven會將其復制到target/classes, - Log4j 1.x 使用名稱
log4j.properties,Log4j 2.x 使用log4j2.properties, - 屬性配置格式是最難掌握的。我建議您使用任何其他格式(例如 XML,它不需要額外的依賴項)。
如果你堅持使用屬性格式,這里有一些提示:
每個配置都需要一個根記錄器,它是每個記錄器的祖先,并為其他記錄器配置提供默認值。您可以使用簡寫符號:
rootLogger = INFO, stdout, file在版本 2.17.2 或長符號中引入:
rootLogger.level = INFO rootLogger.appenderRef.$1.ref = stdout rootLogger.appenderRef.$2.ref = fileappender 參考的名稱必須與 appender 的
name屬性匹配:appender.stdout.name = stdout appender.file.name = file沒有簡寫。
FileAppender需要fileName一個:appender.file.fileName = mylog
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/446971.html
