当前位置: 首页 > 知识库问答 >
问题:

如何在logback-spring.xml中包含一个自定义xml?

丌官远
2023-03-14

我创建了一个公共日志back-common.xml。我想在另一个文件logback.spring.xml中使用这个文件。请帮助我如何有效地使用它。

截至目前,应用程序正在启动,但不会在控制台中打印日志,并且日志不会填充到日志文件中。请帮忙。不要将其标记为重复,因为我几乎尝试了所有内容,并且我已经为此投入了2天。与此相关的其他问题没有附上有效的答案。

logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <property resource ="application.yml"/>
    <springProperty name="NAME" source="spring.application.name" />
    <include file="logback-common.xml"/>
</configuration>

logback-common.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <include resource="org/springframework/boot/logging/logback/base.xml"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
    <property name="LOGS" value="./logs" />
    <appender name="Console"
        class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable
            </Pattern>
        </layout>
    </appender>

    <appender name="RollingFile"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOGS}/${NAME}.log</file>
        <encoder
            class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
        </encoder>

        <rollingPolicy
            class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- rollover daily and when the file reaches 10 MegaBytes -->
            <fileNamePattern>${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd}.%i.log
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
    </appender>
    
    <!-- LOG everything at INFO level -->
    <root level="info">
        <appender-ref ref="RollingFile" />
        <appender-ref ref="Console" />
    </root>

    <!-- LOG "com.baeldung*" at TRACE level -->
    <logger name="com.ms" level="trace" additivity="false">
        <appender-ref ref="RollingFile" />
        <appender-ref ref="Console" />
    </logger>
    
    <logger name="org.springframework.core.env.PropertySourcesPropertyResolver" level="trace" additivity="true">
    </logger>

</configuration>

应用程序. yml

spring:
  application:
    name: Logbacking-service

共有1个答案

宋凌龙
2023-03-14

对于您的子配置,您需要使用下面的“资源”而不是“文件”(因为它存在于类路径中)

<include resource="logback-common.xml"/>

当 logback 能够查找并加载所有配置文件时,您会在控制台上看到打印的信息,因为 logback 在非常初始的阶段被引导。

更新:-关于您共享的错误-您还需要在您的子配置文件中使用< code>included标记,而不是< code>configuration标记。测试了以下配置,它对我来说工作正常。

logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <property resource ="application.yml"/>
    <springProperty name="NAME" source="spring.application.name" />
    <include resource="logback-common.xml"/>
</configuration>

子配置为

<?xml version="1.0" encoding="UTF-8"?>
<included>
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <include resource="org/springframework/boot/logging/logback/base.xml"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
    <property name="LOGS" value="./logs" />
    <appender name="Console"
        class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable
            </Pattern>
        </layout>
    </appender>

    <appender name="RollingFile"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOGS}/${NAME}.log</file>
        <encoder
            class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
        </encoder>

        <rollingPolicy
            class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- rollover daily and when the file reaches 10 MegaBytes -->
            <fileNamePattern>${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd}.%i.log
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
    </appender>
    
    <!-- LOG everything at INFO level -->
    <root level="info">
        <appender-ref ref="RollingFile" />
        <appender-ref ref="Console" />
    </root>

    
    <logger name="com.ms" level="trace" additivity="false">
        <appender-ref ref="RollingFile" />
        <appender-ref ref="Console" />
    </logger>
    
    <logger name="org.springframework.core.env.PropertySourcesPropertyResolver" level="trace" additivity="true">
    </logger>

</included>
 类似资料:
  • 我正在用Visual Studio(2017)构建pybind11项目。安装文件如下: 然后在windows power shell中,我将运行 python设置。皮包 但是它抱怨找不到多个包含文件,我相信它以后也会抱怨缺少库文件: 我知道这个目标在哪里。h是,只是不知道如何将其位置添加到包含路径。 非常感谢你的帮助。

  • 问题内容: 我写了一个扩展JPanel的类。是否可以在NetBeans GUI Builder中使用它,并使它在所有自动代码生成中都可以生存? 我在GUI生成器中使用了自定义代码选项将对象实例化为新类,但似乎无法从JPanel更改声明,因此仅调用已覆盖的方法,而不能调用new JPanel中不存在的那些。 问题答案: 只需将类从项目树拖到GUI设计器中的表单上即可。

  • 如何在自定义. php文件中包含WordPress函数? 详细说明:我的主题(构造函数)下有一个名为reports的目录。这些包含。php文件,该文件使用DOMPDF从站点的数据生成报告以供下载。对于这些,我想使用WordPress引擎提供的函数,例如。如果我使用这些,我(自然)会得到以下错误: 致命错误:在ROOT/public\u html/wp content/themes/construc

  • 问题内容: 如何在自定义.php文件中包含WordPress函数? 详细信息:我在主题(构造函数)下有一个名为reports的目录。这些文件包含.php文件,这些文件使用DOMPDF从站点数据生成报告以供下载。对于这些,我想使用WordPress引擎提供的功能,例如。如果我使用这些,我(自然)会收到以下错误: 致命错误:在第15行的ROOT / public_html / wp-content /

  • 转换为fxml 我总是从javafx.fxml.loadException类型中得到错误代码:也许有比创建自定义类更好的解决方案。但我需要一个标签与自定义接口(连接)。也许另一个解决方案是创建一个只包含标签的fxml文件,并通过接口为此设置一个控制器类。 编辑:

  • 我有2个Spring Boot(1.4.1-发行版)控制台应用程序使用了Logback。这两个配置文件或多或少是相同的,都位于my/src/main/resources文件夹中,名为logback-spring.xml。 这两个项目都在其pom.xml中包含了maven依赖项spring-boot-starter-logging,并获取1.1.7版本的日志。 两个POM中定义的Spring Boo