Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java log4j配置未写入应用程序日志_Java_Spring_Logging_Log4j2 - Fatal编程技术网

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

Java log4j配置未写入应用程序日志,java,spring,logging,log4j2,Java,Spring,Logging,Log4j2,通过将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=

通过将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>
已配置log4j.logger.com.myPackage=TRACE,但从以上日志中,仅打印错误日志。不确定,为什么。有人能帮忙吗

  • 您的配置语法是针对log4j1.x的,而不是针对Log4j2的
  • 配置文件的名称用于Log4j 1.x,而不是Log4j2
  • 您已将所有SLF4J呼叫路由到log4j 1.x
  • 您已将Commons日志路由到SLF4J
  • 考虑到所有这些,log4j2将只使用其默认配置,即将错误记录到控制台。如果你想使用log4j2,你应该

  • 不从Spring依赖项中排除commons日志记录
  • 将jcl-over-slf4j替换为log4j jcl
  • 将slf4j-log4j12替换为log4j-1.2-api
  • 使用有效的log4j 2.x配置
  • 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;
        }
    }