log4j默认配置

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LogTest {

    public static void main(String[] a) {
        Logger logger = LoggerFactory.getLogger(String.class);
//        Logger logger = LogManager.getLogger();
        logger.error("123");
    }

}
// 结果打印如下
log4j:WARN No appenders could be found for logger (java.lang.String).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class LogTest {

    public static void main(String[] a) {
//        Logger logger = LoggerFactory.getLogger(String.class);
        Logger logger = LogManager.getLogger();
        logger.error("123");
    }

}

// 结果打印如下
ERROR StatusLogger No Log4j 2 configuration file found. Using default configuration (logging only errors to the console), or user programmatically provided configurations. Set system property 'log4j2.debug' to show Log4j 2 internal initialization logging. See https://logging.apache.org/log4j/2.x/manual/configuration.html for instructions on how to configure Log4j 2
21:46:10.903 [main] ERROR LogTest - 123

依赖配置如下

    <dependencies>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.12.0</version>
        </dependency>

        <!-- slf4j与log4j之间的桥接包-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.25</version>
        </dependency>
    </dependencies>

以上两次结果是在未配置log4j对应的配置文件的情况下运行得到
第一种是使用slf4j的方式获取logger,获取logger方式有所不同,没有使用log4j2的默认logger
第二种是使用的log4j的API,也警告了相关信息,使用默认配置

下面看一下第三种运行结果:
使用的demo是第二组代码,这里只提供了一个空的配置文件log4j2.xml,但是未提供logger

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="debug">
</Configuration>

在这里插入图片描述看一下启动时的log4j输出日志,可以看到以上信息,采取了默认配置,然后我们跟一下源码

    public DefaultConfiguration() {
        super(null, ConfigurationSource.NULL_SOURCE);
        setToDefault();
    }

    protected void setToDefault() {
        // LOG4J2-1176 facilitate memory leak investigation
        setName(DefaultConfiguration.DEFAULT_NAME + "@" + Integer.toHexString(hashCode()));
        final Layout<? extends Serializable> layout = PatternLayout.newBuilder()
                .withPattern(DefaultConfiguration.DEFAULT_PATTERN)
                .withConfiguration(this)
                .build();
        // 默认输出到控制台
        final Appender appender = ConsoleAppender.createDefaultAppenderForLayout(layout);
        appender.start();
        addAppender(appender);
        // 默认取根logger
        final LoggerConfig rootLoggerConfig = getRootLogger();
        rootLoggerConfig.addAppender(appender, null, null);
		// 默认日志级别为error
        final Level defaultLevel = Level.ERROR;
        final String levelName = PropertiesUtil.getProperties().getStringProperty(DefaultConfiguration.DEFAULT_LEVEL,
                defaultLevel.name());
        final Level level = Level.valueOf(levelName);
        rootLoggerConfig.setLevel(level != null ? level : defaultLevel);
    }

OVER

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值