gpt4 book ai didi

spring-boot - 如何在 log-back.xml 中包含 xml

转载 作者:行者123 更新时间:2023-12-04 02:37:22 25 4
gpt4 key购买 nike

我正在编写一个用于日志记录的自定义 Spring Boot 启动项目。我的 logback-spring.xml 变大了,想把 appender 放在单独的文件(console-appender.xml 和 file-appender.xml)中,并想包含在 logback-spring.xml 文件中,如下所示。我将所有三个 xml 放在我的自定义启动项目的 src/main/resources 文件夹中。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

<springProperty scope="context" name="JSONLOGSENABLED" source="spring.logs.json.enabled" defaultValue="true" />
<springProperty scope="context" name="JSONLOGSAPPENDER" source="spring.logs.json.appender" defaultValue="console" />

<if condition='property("JSONLOGSENABLED").equalsIgnoreCase("true")'>
<then>

<include file="{path to file}/console-appender.xml"/>
<include file="{path to file}/file-appender.xml"/>
<root level="INFO">
<if condition='property("JSONLOGSAPPENDER").equalsIgnoreCase("file")'>
<then>
<appender-ref ref="FILEJSON" />
</then>
<else>
<appender-ref ref="CONSOLEJSON" />
</else>
</if>
</root>
</then>
</if>

<logger
name="org.springframework.web.filter.CommonsRequestLoggingFilter">
<level value="DEBUG" />
</logger>

</configuration>

文件appender.xml
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>testFile.log</file>
<append>true</append>
<!-- set immediateFlush to false for much higher logging throughput -->
<immediateFlush>true</immediateFlush>
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>

但是当在我的 spring boot 应用程序中使用这个 starter 时,它无法解析控制台和文件 appender 文件。

我试过放置以下路径:
 <include file="/src/main/resources/console-appender.xml"/>
<include file="./console-appender.xml"/>
<include resource="console-appender.xml"/>

在这种情况下如何正确包含文件?

最佳答案

是的,这是可能的。 Logback 使用 Joran,所以你必须遵循 Joran 规则。
欲了解更多信息,请参阅 documentation .

无论如何,这是做你正在寻找的事情的首选方式。
例如,我定义了两个文件,然后您可以根据需要对其进行调整。

logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>

<configuration>
<include resource="console-appender.xml"/>

<root level="debug">
<appender-ref ref="CONSOLE"/>
</root>
</configuration>

控制台appender.xml
<included>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%date{"yyyy-MM-dd HH:mm:ss.SSS", Europe/Rome} [%mdc{id}] [%-11thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
</included>

请注意 <included>标签是 强制性

关于spring-boot - 如何在 log-back.xml 中包含 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61080281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com