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

如何在Spring Boot中禁用logback ConsoleAppender

寿嘉悦
2023-03-14

我正在使用Spring Boot构建一个命令行应用程序。在这样的应用程序中,日志反馈控制台日志记录是不合适的。我怎样才能完全禁用控制台附加器,但仍然让文件附加器在默认的Spring Boot支持下工作呢?

我在这里创建了一个特性请求,以便更简单地支持该特性:

https://github.com/spring-projects/spring-boot/issues/1612

共有1个答案

欧阳正卿
2023-03-14

只需在src/main/resources中添加一个名为logback.xml的文件,其内容如下(除Spring Boot的源代码中的控制台部分外,是逐字复制的):

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


    <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>
    <property name="FILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } [%t] --- %-40.40logger{39} : %m%n%wex"/>

    <appender name="FILE"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
        <file>${LOG_FILE}</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>${LOG_FILE}.%i</fileNamePattern>
        </rollingPolicy>
        <triggeringPolicy
                class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>

    <root level="INFO">
        <appender-ref ref="FILE" />
    </root>

</configuration>

请注意

<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>

为了支持从Spring Boot的logging.filelogging.path设置日志文件,需要。

如果您想要做的只是设置一些标准日志文件,那么您可以在上面的属性中设置place它的路径。

更新(02-04-2015)

在Spring Boot的较新版本中,您可以轻松地包含Spring Boot中的base.xml并创建以下logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml" />

    <root level="INFO">
        <appender-ref ref="FILE" />
    </root>
</configuration>

为了在Spring Boot 1.5.x和2.0.0.M4上运行,我添加了一个名为logback-spring.xml的文件,并将其添加到resources目录中。文件可能如下所示

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


    <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>
    <property name="FILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } [%t] --- %-40.40logger{39} : %m%n"/>

    <appender name="FILE"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
        <file>${LOG_FILE}</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>${LOG_FILE}.%i</fileNamePattern>
        </rollingPolicy>
        <triggeringPolicy
                class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>

    <root level="INFO">
        <appender-ref ref="FILE" />
    </root>

</configuration>
 类似资料:
  • 似乎Springboot自动配置自己来使用Tomcat的Logback。我想禁用它,并使用我在类路径中提供的一个。 LoggerFactory不是LoggerContext,但Logback位于类路径上。删除Logback或类[org.slf4j.impl.SimpleLoggerFactory]的竞争实现(类org.slf4j.impl.SimpleLoggerFactory)对象必须是类ch.

  • 问题内容: 使用杰克逊2.1,如何禁用错误消息似乎要禁用的消息? 我以为这只是世界上最简单的事情,但是该死了,它太迟了,我还没有找到一个简单的教程或任何特别明显的东西。?他们为什么要使它如此直观,然后使错误消息看起来如此简单? 尽管我 确实 喜欢该错误消息,但我的意思是,它比NPE更好。 我假设有一种使用注释的方法-但是我根本不希望将它们用于我正在做的简单工作! 问题答案: 我相信,您可以按班级或

  • 问题内容: 我创建了一个swings应用程序,并且GUI上有一个“开始”按钮。我希望每当我单击该“开始”按钮时,都应禁用开始按钮,并启用“停止”按钮。 为此,我在“开始”按钮的“ ActionPeformed(…)”方法中编写了以下代码 但是以上代码并未在GUI上产生所需的影响。 上面的代码对我想要做的正确吗? 它也不能与“ repaint()”一起使用。 编辑: 代码很长,所以我不能粘贴所有代码

  • 我试图在我的基于微服务的Spring启动应用程序中实现普罗米修斯,部署在weblogic服务器上。作为POC的一部分,我已经将配置作为一场战争的一部分。为了启用它,我在下面设置了配置- 应用属性 格拉德尔- 但执行器请求被现有的拦截器阻止。它要求在特定于我们项目的标题中传递值。通过postman(http:localhost:8080/abc/activator/prometheus),我可以测试

  • 问题内容: 注意:这旨在作为常见问题的规范答案。 我有一个带有字段()的Spring 类(),但是该字段是我尝试使用它时所用的。日志显示同时创建了bean和bean,但是每当尝试在服务bean上调用方法时,我都会得到一个。Spring为什么不自动接线该领域? 控制器类: 服务等级: 应该自动连接的服务bean,但不是: 当我尝试时,出现以下异常: 问题答案: 带注释的字段是因为Spring不知道您

  • 如何启用此处列出的ExecutorServiceMetrics? https://github.com/micrometer-metrics/micrometer/blob/master/micrometer-core/src/main/java/io/micrometer/core/instrument/binder/jvm/ExecutorServiceMetrics.java SpringB

  • 问题内容: 当我使用Alamofire两次发送GET请求时,我得到的响应是相同的,但是我期望得到不同的响应。我想知道这是否是由于缓存造成的,如果是这样,我想知道如何禁用它。 问题答案: 迅捷3,alamofire 4 我的解决方案是: 为Alamofire创建扩展: 并使用它:

  • 问题内容: 我正在创建应在Tomcat上运行的SOAP服务。 我正在为我的应用程序使用Spring Boot,类似于: 我的网络服务(示例): 问题: 每当我在webservice类中引发异常时,服务器上都会记录以下消息: ErrorPageFilter:由于响应已提交,因此无法转发到请求[/ services / MyWebservice]的错误页面。结果,响应可能具有错误的状态代码。如果您的应