如何在Spring Boot中禁用logback ConsoleAppender

bti*_*nay 10 logback spring-boot

我正在使用Spring Boot构建命令行应用程序.在此类应用程序中,日志记录控制台日志记录不合适.如何完全禁用控制台appender,但仍然使用默认的Spring Boot支持文件appender ?

更新

我在这里创建了一个功能请求,以便更简单地支持此功能:

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

Wim*_*uwe 11

使用Spring Boot 1.3.0,我创建了一个文件logback-spring.xml(src/main/resources包含以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
    <springProfile name="dev">
        <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
        <root level="INFO">
            <appender-ref ref="CONSOLE" />
        </root>
    </springProfile>

    <springProfile name="staging,prod">
        <include resource="org/springframework/boot/logging/logback/file-appender.xml" />
        <root level="INFO">
            <appender-ref ref="FILE" />
        </root>
    </springProfile>
</configuration>
Run Code Online (Sandbox Code Playgroud)

此外,我添加了logging.file属性application-staging.propertiesapplication-prod.properties指定文件名应该是什么.

这将记录到控制台dev以及文件stagingprod配置文件.


geo*_*and 10

只需添加一个名为logback.xmlin 的文件,src/main/resources其中包含(从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>
Run Code Online (Sandbox Code Playgroud)

注意

<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>
Run Code Online (Sandbox Code Playgroud)

需要支持从Spring Boot logging.file和的设置日志文件logging.path.

如果您只想设置一些标准日志文件,则可以在上面的属性中设置它的路径.

更新(02-04-2015)

在较新版本的Spring Boot中,您可以轻松地包含base.xmlSpring Boot中的内容并创建以下内容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>
Run Code Online (Sandbox Code Playgroud)

更新(15-09-2017)

为了使这个工作在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>
Run Code Online (Sandbox Code Playgroud)

  • 在已重命名为"defaults.xml"的较新版本中. (3认同)
  • 我建议你做一下[`logback.xml`]中的内容(https://github.com/spring-projects/spring-boot/blob/master/spring-boot/src/main/resources/org/ springframework/boot/logging/logback/logback.xml)并简单地添加一个只记录到文件的根记录器(就像@geoand一样.保存你复制前面提到的文件中的内容. (2认同)