Log4j 不会为我的项目记录任何日志文件



我的log4j不记录任何日志文件。我不确定这是log4j.properties内部设置还是此文件位置的问题。

我构建项目的方式:

git clone https://github.com/spring-guides/gs-maven.git

然后修改:.initialpom.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>

添加了日志命令.initialsrcmainjavahelloHelloWorld.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

我一直将此文件的位置更改为

.initiallog4j.properties
.initialtargetlog4j.properties
.initialtargetclasseslog4j.properties
.initialtargetclasseshellolog4j.properties

他们都没有工作过。我没有看到mylog或任何其他日志文件。

我运行项目的方式如下:

cd initial
mvn compile
mvn package
java -jar target/gs-maven-0.1.0.jar

我应该如何解决这个问题?

您的配置存在一些问题:

  • 正如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 = file
    
  • 追加
  • 器引用的名称必须与追加程序的name属性匹配:

    appender.stdout.name = stdout
    appender.file.name = file
    

    没有速记。

  • FileAppender需要fileName

    appender.file.fileName = mylog
    

相关内容

  • 没有找到相关文章

最新更新