当前位置: 首页 > 面试题库 >

使用Log4j2记录Spring

史钊
2023-03-14
问题内容

我正在尝试使用 Log4j2
将spring日志打印到文件和控制台中。我猜这是我的Log4j2配置中的问题。我无法使其正常运行。我的log4j2.xml文件中有以下配置:

<?xml version="1.0" encoding="UTF-8"?>
<configuration name="defaultConfiguration" status="warn" strict="true" monitorInterval="5">
    <properties>
        <property name="patternlayout">%d{ISO8601} [%t] %-5level %logger{36} - %msg%n%throwable{full}</property>
        <property name="filename">${env:MY_ROOT}/logs/mylog.log</property>
        <property name="filenamePattern">${env:MY_ROOT}/logs/mylog-%d{yyyy-dd-MM}-%i.log.gz</property>
    </properties>
    <appenders>
        <appender name="Console" type="Console" target="SYSTEM_OUT">
            <layout type="PatternLayout" pattern="${patternlayout}" />
        </appender>
        <appender name="File" type="RollingFile" fileName="${filename}" filePattern="${filenamePattern}" bufferedIO="true" immediateFlush="true"
        append="true">
            <layout type="PatternLayout" pattern="${patternlayout}" />
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="50 MB" />
            </Policies>
            <DefaultRolloverStrategy max="30" />
        </appender>
        <appender name="AsynchFile" type="asynch" blocking="true" bufferSize="128">
            <appender-ref ref="File" />
        </appender>
    </appenders>
    <loggers>
        <root level="info">
            <appender-ref ref="Console" />
            <appender-ref ref="AsynchFile" />
        </root>
        <logger name="org.springframework.beans">
            <appender-ref ref="Console" />
            <appender-ref ref="AsynchFile" />
        </logger>
    </loggers>
</configuration>

这些是我在pom文件中具有的依赖项:(可能其中一些不是必需的)

<dependency>
 <groupId>org.slf4j</groupId>
 <artifactId>slf4j-api</artifactId>
 <version>1.6.6</version>
</dependency>

<dependency>
 <groupId>org.slf4j</groupId>
 <artifactId>slf4j-log4j12</artifactId>
 <version>1.6.6</version>
</dependency>

<dependency>
 <groupId>org.apache.logging.log4j</groupId>
 <artifactId>log4j-api</artifactId>
 <version>2.0-beta5</version>
</dependency>

<dependency>
 <groupId>org.apache.logging.log4j</groupId>
 <artifactId>log4j-core</artifactId>
 <version>2.0-beta5</version>
</dependency>
<dependency>
 <groupId>org.apache.logging.log4j</groupId>
 <artifactId>log4j-1.2-api</artifactId>
 <version>2.0-beta5</version>
</dependency>

<dependency>
 <groupId>com.lmax</groupId>
 <artifactId>disruptor</artifactId>
 <version>3.0.0.beta3</version>
</dependency>

我没有在Java代码中做任何与spring相关的事情。我正在使用Apache Camel的Main类,该类读取我的spring配置并加载bean。

我究竟做错了什么?谢谢!

编辑:我没有在任何输出(控制台或文件)中获取spring日志。但是,我能够获取在Java代码中创建的日志。我希望这种澄清会有所帮助。


问题答案:

查看pom中的依赖项,您会看到以下内容:slf4j-log4j12。这导致针对slf4j
api的日志语句被路由到Log4j-1.2实现。您可能希望将它们路由到Log4j-2.0实现。您可以用log4j-slf4j-impl替换slf4j-log4j12并重试吗?



 类似资料:
  • 我试图从log4j1更改为log4j2。我所做的: 已删除旧配置文件log4j。xml 创建了新的配置文件log4j2。xml 创建了jboss部署结构。xml 编辑的pom 环境:野蝇10 1 EAR 4 WAR文件中没有使用web.xml。以前的log4j配置日志在EAR中(仅) Log4j2配置文件 Jboss部署结构 新的maven依赖关系 我之前说过我在SLF4j中使用log4j1。这些

  • 编写了简单的POC来证明和测试Spring Boot和log4j2的兼容性。一旦成功,我将把它移动到真正的应用程序。 请参考下面的maven依赖关系(来自POC): 如果我不排除Spring的logback,也不添加boot-starter-log4j2,那么应用程序日志会打印到应用程序文件中,但Spring日志根本不会打印。我感觉到了依赖的问题。感谢任何帮助。

  • 我使用的是,我想配置将不同的内容异步记录到不同的日志文件中。 我创建了log4j2文件,但是仍然使用Spring Boot默认日志记录。如何切换日志记录?

  • 如果我在application.properties文件中指定“Logging.config=src/main/resources/log4j2.properties”,日志记录就可以正常工作。 spring boot自动检测log4j2.properties而不需要在application.properties文件中指定“logging.config=src/main/resources/log

  • 我目前正在开发一个应用程序,它将为不同的目的生成两个不同的日志文件。因为我是log4j2新手,所以无法实现它。这是我的配置文件(log4j2.xml): 我不确定我是否用了正确的方法。下面是我的java方法,它试图使用log4j2进行日志记录 谢谢