`

请您先登录,才能继续操作

初探Log4j2-yaml配置坑

阅读更多

不思进取太久了,想捣鼓点新东西,刚好在log4j这一块有解决不了的问题,想换log4j2试试;以前也没有写过yaml,就想着顺便试试新的配置。

 

笔者使用maven构建Demo, 按官网Configuration with YAML的说明加入依赖

<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-yaml</artifactId>
    <version>2.8.6</version>
</dependency>

 兴致勃勃写了个最简单的main方法,打印info级别的日志,跑起来却一直报:

 

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.

找不到log4j2的配置文件,笔者检查了几遍,配置文件明明已经编译成功,怎么会找不到呢?
网上找了很多相关的文章,都没发现有出现过类似的问题。。。

不能卡在这是吧,太想试试log4j2了, Debug源代码吧,这一Debug,我勒个去啊,jackson-dataformat-yaml这个依赖包还有些依赖没被引入,com.fasterxml.jackson.databind.ObjectMapper 在源文件里就就是红的...

 

导致YamlConfigurationFactory中的构造方法无法正常加载com.fasterxml.jackson.databind.ObjectMapper的Class...

 

private static final String[] dependencies = new String[] {
      "com.fasterxml.jackson.databind.ObjectMapper",
      "com.fasterxml.jackson.databind.JsonNode",
      "com.fasterxml.jackson.core.JsonParser",
      "com.fasterxml.jackson.dataformat.yaml.YAMLFactory"
};

private final boolean isActive;

public YamlConfigurationFactory() {
    for (final String dependency : dependencies) {
        if (!Loader.isClassAvailable(dependency)) {
            LOGGER.debug("Missing dependencies for Yaml support");
            isActive = false;
            return;
        }
    }
    isActive = true;
}

 

 isActive的结果为false, YamlConfigurationFactory的getConfiguration()获取配置永远为null

@Override
public Configuration getConfiguration(final LoggerContext loggerContext, final ConfigurationSource source) {
    if (!isActive) {
        return null;
    }
    return new YamlConfiguration(loggerContext, source);
}

 

 

解决方法:

加入jackson-databind依赖包

<dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-databind</artifactId>
       <version>2.8.6</version>
</dependency>

 

 

分享到:
评论

相关推荐

    logging-log4j2-log4j-2.15.0-rc2.zip

    Log4j 2是Log4j的下一代版本,它引入了大量新特性,包括异步日志记录、可插拔的日志格式化器、动态配置以及丰富的API。相较于Log4j 1.x,Log4j 2不仅在性能上有所增强,而且在用户体验和安全性上都有显著改进。 2....

    log4j-api-2.17.1.jar和log4j-core-2.17.1.jar

    《深入理解log4j-api-2.17.1.jar与log4j-core-2.17.1.jar》 ...在实际项目中,合理地配置和使用Log4j2不仅可以提升日志管理的效率,还能在问题发生时快速定位,从而提高整体的开发效率和产品质量。

    jackson-dataformat-yaml-2.11.4-API文档-中文版.zip

    赠送jar包:jackson-dataformat-yaml-2.11.4.jar; 赠送原API文档:jackson-dataformat-yaml-2.11.4-javadoc.jar; 赠送源代码:jackson-dataformat-yaml-2.11.4-sources.jar; 赠送Maven依赖信息文件:jackson-data...

    jackson-dataformat-yaml-2.10.0-API文档-中文版.zip

    赠送jar包:jackson-dataformat-yaml-2.10.0.jar; 赠送原API文档:jackson-dataformat-yaml-2.10.0-javadoc.jar; 赠送源代码:jackson-dataformat-yaml-2.10.0-sources.jar; 赠送Maven依赖信息文件:jackson-data...

    jackson-dataformat-yaml-2.11.4-API文档-中英对照版.zip

    赠送jar包:jackson-dataformat-yaml-2.11.4.jar; 赠送原API文档:jackson-dataformat-yaml-2.11.4-javadoc.jar; 赠送源代码:jackson-dataformat-yaml-2.11.4-sources.jar; 赠送Maven依赖信息文件:jackson-data...

    jackson-dataformat-yaml-2.8.6-API文档-中英对照版.zip

    赠送jar包:jackson-dataformat-yaml-2.8.6.jar; 赠送原API文档:jackson-dataformat-yaml-2.8.6-javadoc.jar; 赠送源代码:jackson-dataformat-yaml-2.8.6-sources.jar; 赠送Maven依赖信息文件:jackson-data...

    spring-boot-config-yaml.jar

    spring-boot-config-yaml.jarspring-boot-config-yaml.jarspring-boot-config-yaml.jarspring-boot-config-yaml.jarspring-boot-config-yaml.jarspring-boot-config-yaml.jarspring-boot-config-yaml.jarspring-boot...

    log4j2 -2.11.1.zip

    Log4j2使用XML、JSON或YAML格式的配置文件,使得日志配置更为直观和灵活。你可以根据需要设置不同级别的日志输出,如DEBUG、INFO、WARN、ERROR等,甚至可以为不同的类或方法定制日志级别。 4. **过滤器和Lookup**:...

    apache-log4j-2.0-rc1-src

    6. **YAML和JSON支持**:除了XML,Log4j 2还支持YAML和JSON格式的配置文件,使得配置更易读写。 7. **JMX Console**:通过JMX(Java Management Extensions)提供管理控制台,可动态监控和调整Log4j的运行状态。 ...

    apache-log4j-2.17.0-bin.tar.gz

    6. **配置灵活性**:Log4j的配置可以通过XML、JSON、YAML或纯Java代码进行,方便调整和适应不同环境。 7. **安全性**:Log4j 2.17.0修复了一个名为CVE-2021-44228的重大安全漏洞,该漏洞允许攻击者通过控制日志输入...

    jackson-dataformat-yaml-2.8.6-API文档-中文版.zip

    赠送jar包:jackson-dataformat-yaml-2.8.6.jar; 赠送原API文档:jackson-dataformat-yaml-2.8.6-javadoc.jar; 赠送源代码:jackson-dataformat-yaml-2.8.6-sources.jar; 赠送Maven依赖信息文件:jackson-data...

    log4j2-2.3

    3. **XML, JSON, YAML配置**:除了传统的XML配置文件,Log4j2还支持JSON和YAML格式,提供了更灵活的配置选项。 4. **插件体系**:Log4j2引入了一个插件系统,可以方便地添加新的日志模式、Appenders(日志输出目标...

    yaml-cpp-yaml-cpp-0.6.0.tar.gz

    4. 支持多种数据类型:yaml-cpp不仅支持基本的标量类型(如整型、浮点型、字符串),还支持序列(如数组)和映射(如对象)等复杂数据结构。 5. 自定义转换:用户可以自定义数据类型与YAML节点之间的转换规则,使库...

    apache-log4j-2.8.2-bin.tar

    2. **配置灵活性**:Log4j 提供了灵活的配置方式,可以通过XML、JSON、YAML或Java API来定义日志行为。在2.8.2版本中,这些配置文件可能包含更丰富的选项和优化,以提高性能和定制化能力。 3. **Layouts与Patterns*...

    log4j优化文件 logging-log4j2-log4j-2.15.0-rc1.tar

    1. **配置灵活性**:Log4j2的配置可以通过XML、JSON、YAML或者Java API进行,这使得配置方式多样,适应不同场景需求。 2. **异步日志处理**:Log4j2引入了AsyncAppender,它可以实现日志事件的非阻塞处理,显著提升...

    jackson-dataformat-yaml-2.10.0.jar

    jackson-dataformat-yaml-2.10.0

    apache-log4j-2.15.0-bin.tar.gz

    1. **配置灵活性**:Log4j 2提供了XML、JSON、YAML和Groovy等多种配置格式,允许用户根据项目需求定制日志输出。 2. **异步日志记录**:Log4j 2支持异步日志记录,通过使用LMAX Disruptor库,可以实现高吞吐量且无锁...

    yaml-cpp-yaml-cpp-0.6.2.zip

    《深入理解YAML-CPP库:解析YAML文件的CPP实现》 YAML,全称“YAML Ain't Markup Language”(发音同“camel”,意为“不是标记语言”),是一种简洁、直观的数据序列化语言。它常用于配置文件、数据交换格式等领域...

    jackson-dataformat-yaml-2.4.5.jar

    jackson-dataformat-yaml-2.4.5.jar

    log4j-core-2.5

    2. **可配置性**:Log4j-core-2.5允许开发者通过XML、JSON或YAML等格式的配置文件自定义日志输出格式,包括日志级别、输出目的地、过滤器等。 3. **插件体系**:Log4j-core-2.5支持多种插件,如Layout、Filter、...

Global site tag (gtag.js) - Google Analytics