Log4j使配置文件变乱并将所有内容打印到控制台

时间:2019-04-01 18:31:43

标签: java spring-boot logging log4j

我正在尝试使用Log4j记录信息。我已经创建了log4j.properties:

# Root logger option
log4j.rootLogger=INFO, file, stdout
# configuration to print into file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\log\\logging.log
log4j.appender.file.MaxFileSize=12MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# configuration to print on 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

随附的记录器:

private static final Logger logger = LogManager.getLogger(UserController.class);

并尝试登录:

   logger.debug("Debugging log");
    logger.info("Info log");
    logger.warn("Hey, This is a warning!");
    logger.error("Oops! We have an Error. OK");
    logger.fatal("Damn! Fatal error. Please fix me.");

但是所有内容都已登录到控制台(并且调试被忽略)。

我的属性文件位于\src\main\resources文件夹中,我尝试使用基于xml的配置,但结果相同,将其打印到文件中没有运气。

我在配置上犯了任何错误吗?还是问题的根源在哪里?

感谢帮助

编辑:

我正在使用maven和spring-boot,我对此有依赖性:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>

1 个答案:

答案 0 :(得分:0)

请阅读本文档,以获取自定义文件命名https://docs.spring.io/spring-boot/docs/1.2.1.RELEASE/reference/htmlsingle/#boot-features-custom-log-levels

请确定,我假设您使用的是Log4j,而不是Log4j2

首先,根日志记录级别INFO不正确。在这种情况下,它应该是DEBUGlog4j logging hierarchy order

中有一个关于级别层次结构的不错的SO Post

因此,根记录器应如下

log4j.rootLogger=DEBUG, file, stdout

最后,似乎排除XML不正确。您可以在https://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html处找到配置Log4j以记录日志文档,请注意,在此文档中,参考是Log4j2。对于我们的情况,我们需要添加Log4J依赖项。这是我的XML:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>