log4j配置不写入应用程序日志

busg9geu  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(479)

我通过将log4j.properties文件放在src/main/resources/log4j中成功地配置了log4j配置。properties无法打印具有以下配置的应用程序日志。

  1. log4j.rootLogger=INFO, stdout, fileAppender
  2. log4j.logger.org.springframework=INFO
  3. log4j.logger.com.myPackage=TRACE, fileAppender
  4. log4j.logger.org.hibernate=INFO
  5. log4j.logger.org.apache=DEBUG
  6. # Redirect log messages to console
  7. log4j.appender.stdout=org.apache.log4j.ConsoleAppender
  8. log4j.appender.stdout.Target=System.out
  9. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
  10. log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
  11. ### File - fileAppender
  12. log4j.appender.fileAppender=org.apache.log4j.FileAppender
  13. log4j.appender.fileAppender.File=./logs/myapp.log
  14. log4j.appender.fileAppender.Append=false
  15. log4j.appender.fileAppender.layout=org.apache.log4j.PatternLayout
  16. log4j.appender.fileAppender.layout.ConversionPattern=%r; %d; [%t]; %p; %c; %x; - %m%n

pom.xml文件

  1. <properties>
  2. <springframework.version>4.0.3.RELEASE</springframework.version>
  3. <log4j.version>2.13.2</log4j.version>
  4. </properties>
  5. <dependencies>
  6. <!-- Log4j -->
  7. <dependency>
  8. <groupId>org.slf4j</groupId>
  9. <artifactId>jcl-over-slf4j</artifactId>
  10. <version>1.5.8</version>
  11. </dependency>
  12. <dependency>
  13. <groupId>org.slf4j</groupId>
  14. <artifactId>slf4j-api</artifactId>
  15. <version>1.5.8</version>
  16. </dependency>
  17. <dependency>
  18. <groupId>org.slf4j</groupId>
  19. <artifactId>slf4j-log4j12</artifactId>
  20. <version>1.5.8</version>
  21. </dependency>
  22. <dependency>
  23. <groupId>org.apache.logging.log4j</groupId>
  24. <artifactId>log4j-core</artifactId>
  25. <version>${log4j.version}</version>
  26. </dependency>
  27. <dependency>
  28. <groupId>org.springframework</groupId>
  29. <artifactId>spring-context</artifactId>
  30. <version>${springframework.version}</version>
  31. <exclusions>
  32. <exclusion>
  33. <groupId>commons-logging</groupId>
  34. <artifactId>commons-logging</artifactId>
  35. </exclusion>
  36. </exclusions>
  37. </dependency>
  38. </dependencies>

应用类别:

  1. package com.myPackage.config
  2. import org.apache.logging.log4j.LogManager;
  3. import org.apache.logging.log4j.Logger;
  4. @Configuration
  5. @Profile("dev")
  6. public class DevDataSourceConfig {
  7. private static final Logger logger = LogManager.getLogger(DevDataSourceConfig.class);
  8. @Bean(name="dataSource")
  9. public DataSource getDataSource() {
  10. logger.error("=================Dev environment, Entered into dataasource method===============");
  11. logger.debug("=================Dev environment, Entered into dataasource method===============");
  12. logger.info("=================Dev environment, Entered into dataasource method===============");
  13. DriverManagerDataSource dataSource = new DriverManagerDataSource();
  14. dataSource.setDriverClassName(driverClassName);
  15. dataSource.setUrl(jdbcUrl);
  16. dataSource.setUsername(username);
  17. dataSource.setPassword(password);
  18. return dataSource;
  19. }
  20. }

配置了log4j.logger.com.mypackage=trace,但是从上面的日志中,只打印错误日志。不确定,为什么。有人能帮忙吗。

6qqygrtg

6qqygrtg1#

您的配置语法是针对log4j1.x的,而不是针对log4j2的。
配置文件的名称是log4j 1.x而不是log4j2。
您已将所有slf4j呼叫路由到log4j 1.x。
您已将共享日志路由到slf4j。
考虑到所有这些,log4j2将只使用其默认配置,即将错误记录到控制台。如果你想使用log4j 2,你应该
不能从spring依赖中排除commons日志记录。
用log4j jcl替换jcl-over-slf4j。
将slf4j-log4j12替换为log4j-1.2-api。
使用有效的log4j 2.x配置。

相关问题