Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java spring引导中的Log4j2未使用XML文件中的模式_Java_Log4j2 - Fatal编程技术网

Java spring引导中的Log4j2未使用XML文件中的模式

Java spring引导中的Log4j2未使用XML文件中的模式,java,log4j2,Java,Log4j2,我有一个spring boot项目,以下是我使用记录器的方式: import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; class MyController{ private static final Logger log = LogManager.getLogger(MyController.class); public void do(){ log.err

我有一个spring boot项目,以下是我使用记录器的方式:

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

class MyController{    
  private static final Logger log = LogManager.getLogger(MyController.class);

  public void do(){
   log.error("test");
  }    
}
src/main/resources/log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
    <Appenders>
        <Console name="console" target="SYSTEM_OUT">
            <PatternLayout pattern="-- %msg%n --" />
        </Console>
    </Appenders>
    <Loggers>
        <Root level="debug" additivity="false">
            <AppenderRef ref="console" />
        </Root>
    </Loggers>
</Configuration>

您需要指定log4j2上下文: 在您的主方法内部(我猜在您的案例中,在日志记录之前在
do()
内部):

其中
log4j2configFilename
是设置文件的路径。如果您正确地将该文件夹标记为资源文件夹(默认设置),则它应该是

String log4j2configFilename = "log4j2.xml";
如果不起作用,请尝试:

String log4j2configFilename = "src/main/resources/log4j2.xml";
编辑:

您没有排除正确的模块。在你的gradle文件中,你必须替换

exclude group: 'org.slf4j', module: 'slf4j-log4j12'

可能发生的情况是,该模块仍然处于从属关系中,因为它以前包含过。为了彻底摆脱它,你必须管理图书馆

关于IntelliJ IDEA:is
文件>项目结构…>库
,在列表中查找
Gradle:org.apache.logging.log4j:log4j-to-slf4j:2.12.1
,然后单击列表上方的
-
图标


希望我能提供帮助。

您的配置是否可能只包含状态信息的配置<代码>,因为log24j可以配置为自动
org.apache.logging.slf4j.SLF4JLoggerContext不能转换为org.apache.logging.log4j.core.LoggerContext
我将发布我的gradle文件删除显式转换或在声明LoggerContext时指定完整的包,例如:
org.apache.logging.slf4j.SLF4JLoggerContextLoggerContext=xxxxx
I不替换
LoggerContext=(org.apache.logging.log4j.core.LoggerContext)LogManager.getContext(false)带有
LoggerContext context=LogManager.getContext(false)
or
org.apache.logging.slf4j.LoggerContext=LogManager.getContext(false)尝试两种情况请查看我的gradle文件。我没有:org.apache.logging.slf4j谢谢!
String log4j2configFilename = "src/main/resources/log4j2.xml";
exclude group: 'org.slf4j', module: 'slf4j-log4j12'
exclude group: 'org.apache.logging.log4j', module: 'log4j-to-slf4j'