【问题标题】:Spring Boot custom logback logger to file onlySpring Boot 自定义 logback 记录器仅归档
【发布时间】:2018-09-17 00:53:27
【问题描述】:

我在 Spring Boot 应用程序中为 LogBack 定义了一对自定义记录器。这个想法是将所有日志记录发送到一个文件,而不是 Spring Boot 默认提供的标准控制台输出。我看到的是日志记录到自定义文件和控制台,我找不到任何发生这种情况的原因。对两个自定义附加程序的所有日志记录都处于 DEBUG 和/或 TRACE 级别。我设置了 logging.level.root=INFO,认为这会阻止此日志显示,但这并没有帮助。

我确实配置了用于应用程序的标准 Spring Boot 日志记录。所以 logging.path 和 logging.file 都设置好了。

任何帮助表示赞赏。

这是我的自定义 logback-spring.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<!--
    LogBack configuration used by all services to create separate files for TRACE and SOAP logs. 
-->
<configuration>
    <!-- Include the basic Spring-Boot logback configuration. -->
    <include resource="org/springframework/boot/logging/logback/base.xml"/>

    <!-- An appender and logger for TRACE logging of method calls -->
    <appender name="TraceLoggingAppender" class="ch.qos.logback.core.FileAppender">
        <file>${LOG_PATH}/logs/trace.log</file>
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <logger name="TraceLogging" additivity="false" level="trace">
        <appender-ref ref="TraceLoggingAppender"/>
    </logger>

    <!-- An appender and logger for SOAP envelope logging -->
    <appender name="SoapLoggingAppender" class="ch.qos.logback.core.FileAppender">
        <file>${LOG_PATH}/logs/soap.log</file>
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <logger name="SoapLogging" additivity="false" level="debug">
        <appender-ref ref="SoapLoggingAppender"/>
    </logger>
</configuration>

还有一个用法示例:

private static final Log LOG = LogFactory.getLog("SoapLogging");
...
LOG.debug(soapMessage);

【问题讨论】:

    标签: spring-boot logback fileappender


    【解决方案1】:

    而不是包括base.xml 包括defaults.xml 如提到的here

    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
    

    【讨论】:

    • 这对我没有帮助。我仍然在控制台上看到来自 SoapLogging 附加程序的日志记录。我只希望这些语句转到定义的文件。
    • 抱歉,这也不起作用。最终结果是完全关闭日志记录,或者至少将文件发送到我找不到它们的地方。
    【解决方案2】:

    如果您想禁用控制台日志记录并仅将输出写入文件,则需要一个自定义 logback-spring.xml 导入 file-appender.xml 但不导入 console-appender.xml,如下例所示:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <include resource="org/springframework/boot/logging/logback/defaults.xml" />
        <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>
        <include resource="org/springframework/boot/logging/logback/file-appender.xml" />
        <root level="INFO">
            <appender-ref ref="FILE" />
        </root>
    </configuration>
    

    您还需要将 logging.file.name 添加到您的 application.properties,如下例所示:

    logging.file.name=myapplication.log
    

    礼貌:https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html#howto-configure-logback-for-logging-fileonly

    【讨论】:

      猜你喜欢
      • 2015-09-29
      • 2017-01-21
      • 2015-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-15
      • 1970-01-01
      • 2020-08-07
      相关资源
      最近更新 更多