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



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

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

pom.xml

<properties>
<springframework.version>4.0.3.RELEASE</springframework.version>

<log4j.version>2.13.2</log4j.version>
</properties>
<dependencies>
<!-- Log4j -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.5.8</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.5.8</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.8</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${springframework.version}</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>

应用类别:

package com.myPackage.config
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@Configuration
@Profile("dev")
public class DevDataSourceConfig {
private static final Logger logger = LogManager.getLogger(DevDataSourceConfig.class);

@Bean(name="dataSource")
public DataSource getDataSource() { 
logger.error("=================Dev environment, Entered into dataasource method===============");
logger.debug("=================Dev environment, Entered into dataasource method===============");
logger.info("=================Dev environment, Entered into dataasource method===============");
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(driverClassName); 
dataSource.setUrl(jdbcUrl);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
}

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

  1. 您的配置语法适用于Log4j 1.x,而不是Log4j2
  2. 配置文件的名称适用于Log4j 1.x,而不是Log4j2
  3. 您已将所有SLF4J调用路由到log4j 1.x
  4. 您已将Commons Logging路由到SLF4J

考虑到所有这些,Log4j2将只使用其默认配置,即将错误记录到控制台。如果你想使用Log4j 2,你应该

  1. 不将commons日志记录从Spring依赖项中排除
  2. 将jcl-over-slf4j替换为log4j-jcl
  3. 将slf4j-log4j12替换为log4j-1.2-api
  4. 请使用有效的log4j 2.x配置

最新更新