簡體   English   中英

log4j 配置未寫入應用程序日志

[英]log4j configuration not writing application logs

我通過將 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>

應用 class:

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。

鑒於這一切,Log4j 2 將只使用其默認配置,即將錯誤記錄到控制台。 如果你想使用 Log4j 2 你應該

  1. 不從 Spring 依賴項中排除公共日志記錄。
  2. 將 jcl-over-slf4j 替換為 log4j-jcl。
  3. 將 slf4j-log4j12 替換為 log4j-1.2-api。
  4. 使用有效的 log4j 2.x 配置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM