<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title>日志 - 标签 - lihuu — 系统工程、AI 工具链与 Rust 开发博客</title>
        <link>https://silentstormic.top/tags/%E6%97%A5%E5%BF%97/</link>
        <description>日志 - 标签 - lihuu — 系统工程、AI 工具链与 Rust 开发博客</description>
        <generator>Hugo -- gohugo.io</generator><language>zh-CN</language><lastBuildDate>Wed, 27 May 2020 21:41:56 &#43;0800</lastBuildDate><atom:link href="https://silentstormic.top/tags/%E6%97%A5%E5%BF%97/" rel="self" type="application/rss+xml" /><item>
    <title>记录一次在SpringBoot项目中使用log42.yml作为配置文件遇到的问题</title>
    <link>https://silentstormic.top/post/log4j2-problem/</link>
    <pubDate>Wed, 27 May 2020 21:41:56 &#43;0800</pubDate>
    <author>lihuu</author>
    <guid>https://silentstormic.top/post/log4j2-problem/</guid>
    <description><![CDATA[<p>首先在 SpringBoot 中集成<code>log4j2</code>还是比较容易的，只需要在 maven 的 pom 文件中修改一下 logging 的依赖然后在<code>resources</code>中添加<code>log4j2</code>相关的配置文件就可以了。
我当时使用的是<code>log4j2.yml</code>格式的配置文件，所以就在<code>maven</code>的<code>pom.xml</code>文件中做了如下的修改：</p>
<div class="code-block code-line-numbers" style="counter-reset: code-block 0">
    <div class="code-header language-xml">
        <span class="code-title"><i class="arrow fas fa-angle-right fa-fw" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h fa-fw" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy fa-fw" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-xml" data-lang="xml"><span class="line"><span class="cl"><span class="nt">&lt;dependencies&gt;</span>
</span></span><span class="line"><span class="cl">...
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;dependency&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&lt;groupId&gt;</span>org.springframework.boot<span class="nt">&lt;/groupId&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&lt;artifactId&gt;</span>spring-boot-starter<span class="nt">&lt;/artifactId&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&lt;exclusions&gt;</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&lt;exclusion&gt;</span>
</span></span><span class="line"><span class="cl">                <span class="nt">&lt;groupId&gt;</span>org.springframework.boot<span class="nt">&lt;/groupId&gt;</span>
</span></span><span class="line"><span class="cl">                <span class="nt">&lt;artifactId&gt;</span>spring-boot-starter-logging<span class="nt">&lt;/artifactId&gt;</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&lt;/exclusion&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&lt;/exclusions&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;/dependency&gt;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="c">&lt;!--添加log4j2依赖--&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;dependency&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&lt;groupId&gt;</span>org.springframework.boot<span class="nt">&lt;/groupId&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&lt;artifactId&gt;</span>spring-boot-starter-log4j2<span class="nt">&lt;/artifactId&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;/dependency&gt;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="c">&lt;!-- 使用log4j2.yml文件格式来配置，需要引入如下的包 --&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;dependency&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&lt;groupId&gt;</span>com.fasterxml.jackson.dataformat<span class="nt">&lt;/groupId&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&lt;artifactId&gt;</span>jackson-dataformat-yaml<span class="nt">&lt;/artifactId&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;/dependency&gt;</span>
</span></span><span class="line"><span class="cl">...
</span></span><span class="line"><span class="cl"><span class="nt">&lt;/dependencies&gt;</span></span></span></code></pre></div></div>
<p>这个在我当时的项目中是正确运行的。
我后来又创建了一个新的项目，也想用<code>log4j2</code>，就直接复制了上一个项目中配置了，但是在运行的时候发现怎么也加载不了<code>log4j2</code>的配置文件，总是提示<span><code>ERROR StatusLogger No Log4j 2 configuration file found. Using default configuration (logging only errors to the console), or user programmatically provided ...</code></span>，但是<code>log4j2</code>的配置文件的确是存在的。
在这样的情况下，日志是无论如何都不会打印出来的，没办法只能加上<code>log4j2.debug</code>属性进行调试，在控制台的日志中我发现了这样一条日志<code>WARN StatusLogger Found configuration file log4j2.yml for inactive ConfigurationFactory org.apache.logging.log4j.core.config.yaml.YamlConfigurationFactory</code>，大体就是<code>YamlConfigurationFactory</code>不是激活状态，就试着全局搜索这句话，找到了如下的代码，</p>]]></description>
</item>
</channel>
</rss>
