Spring Boot与Logback + springProperty

3

我按照Spring Boot文档的要求进行了logback-spring.xml配置。以下是我的logback-spring.xml文件:

<configuration>

    <springProperty name="appName" source="spring.application.name" defaultValue="myLogFile" />

    <property name="log.date" value="%d{yyyy-MM-dd}" />
    <property name="log.path" value="/log" />
    <property name="log.file" value="${appName}" />
    <property name="log.live.path" value="${log.path}/${log.file}.log" />

    <appender name="myLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.live.path}</file>
        <append>true</append>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/archive/${log.file}.${log.date}.log.gz</fileNamePattern>
            <maxHistory>1</maxHistory>
        </rollingPolicy>
    </appender>

    <logger name="com.log.logback" level="INFO" />
    <logger name="com.log.sample" level="INFO" />

    <root level="ERROR">
        <appender-ref ref="myLogAppender" />
    </root>
</configuration>

application.properties

spring.application.name=mybootapp

当我启动我的Spring Boot应用程序时,我发现在/log路径下创建了2个目录:myLogFilebootstrap。从日志中,我可以看到在logback访问Spring属性之前就已经创建了bootstrap目录。我不知道为什么会创建bootstrap目录。在logback xml中使用<springProperty>之前,我没有遇到过这个问题。我是否错过了任何配置?我在网上找不到任何相关信息。
以下是Logback日志的参考。
15:54:02,085 |-INFO in ch.qos.logback.core.joran.spi.ConfigurationWatchList@610f7aa - URL [jar:file:/C:/projects/jars/logback-logging-17.2.2.INT.jar!/logback-spring.xml] is not of type file
15:54:02,132 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Will scan for changes in [jar:file:/C:/projects/jars/logback-logging-17.2.2.INT.jar!/logback-spring.xml] 
15:54:02,132 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Setting ReconfigureOnChangeTask scanning period to 5 minutes
15:54:02,132 |-WARN in Logger[org.springframework.core.env.PropertySourcesPropertyResolver] - No appenders present in context [default] for logger [org.springframework.core.env.PropertySourcesPropertyResolver].
15:54:02,274 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender]
15:54:02,274 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [myLogAppender]
15:54:02,305 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy@867988177 - Will use gz compression
15:54:02,305 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy@867988177 - Will use the pattern /log/archive/bootstrap.%d{yyyy-MM-dd}.log for the active file
15:54:02,305 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - The date pattern is 'yyyy-MM-dd' from file name pattern '/log/archive/bootstrap.%d{yyyy-MM-dd}.log.gz'.
15:54:02,305 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Roll-over at midnight.
15:54:02,305 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Setting initial period to Tue Apr 18 15:45:05 EDT 2017
15:54:02,320 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[myLogAppender] - Active log file name: /log/bootstrap.log
15:54:02,320 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[myLogAppender] - File property is set to [/log/bootstrap.log]
15:54:02,336 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.log.logback] to INFO
15:54:02,336 |-INFO in ch.qos.logback.classic.jul.LevelChangePropagator@48e1f6c7 - Propagating INFO level on Logger[com.log.logback] onto the JUL framework
15:54:02,336 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.log.sample] to INFO
15:54:02,336 |-INFO in ch.qos.logback.classic.jul.LevelChangePropagator@48e1f6c7 - Propagating INFO level on Logger[com.log.sample] onto the JUL framework
15:54:02,336 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to ERROR
15:54:02,336 |-INFO in ch.qos.logback.classic.jul.LevelChangePropagator@48e1f6c7 - Propagating ERROR level on Logger[ROOT] onto the JUL framework
15:54:02,336 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [myLogAppender] to Logger[ROOT]
15:54:02,336 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
15:54:02,336 |-INFO in org.springframework.boot.logging.logback.SpringBootJoranConfigurator@26abb146 - Registering current configuration as safe fallback point
15:54:03,139 |-INFO in ch.qos.logback.core.joran.spi.ConfigurationWatchList@242aa8d9 - URL [jar:file:/C:/projects/jars/logback-logging-17.2.2.INT.jar!/logback-spring.xml] is not of type file
15:54:03,139 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Will scan for changes in [jar:file:/C:/projects/jars/logback-logging-17.2.2.INT.jar!/logback-spring.xml] 
15:54:03,139 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Setting ReconfigureOnChangeTask scanning period to 5 minutes
15:54:03,139 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender]
15:54:03,139 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [myLogAppender]
15:54:03,139 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy@300604602 - Will use gz compression
15:54:03,139 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy@300604602 - Will use the pattern /log/archive/mybootapp.%d{yyyy-MM-dd}.log for the active file
15:54:03,140 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - The date pattern is 'yyyy-MM-dd' from file name pattern '/log/archive/mybootapp.%d{yyyy-MM-dd}.log.gz'.
15:54:03,140 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Roll-over at midnight.
15:54:03,140 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Setting initial period to Tue Apr 18 15:53:03 EDT 2017
15:54:03,140 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[myLogAppender] - Active log file name: /log/mybootapp.log
15:54:03,140 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[myLogAppender] - File property is set to [/log/mybootapp.log]
15:54:03,140 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.log.logback] to INFO
15:54:03,140 |-INFO in ch.qos.logback.classic.jul.LevelChangePropagator@1b065145 - Propagating INFO level on Logger[com.log.logback] onto the JUL framework
15:54:03,140 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.log.sample] to INFO
15:54:03,140 |-INFO in ch.qos.logback.classic.jul.LevelChangePropagator@1b065145 - Propagating INFO level on Logger[com.log.sample] onto the JUL framework
15:54:03,140 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to ERROR
15:54:03,140 |-INFO in ch.qos.logback.classic.jul.LevelChangePropagator@1b065145 - Propagating ERROR level on Logger[ROOT] onto the JUL framework
15:54:03,140 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [myLogAppender] to Logger[ROOT]
15:54:03,140 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
15:54:03,140 |-INFO in org.springframework.boot.logging.logback.SpringBootJoranConfigurator@45cff11c - Registering current configuration as safe fallback point

有人可以帮忙吗?

(这是一句求助的话)
2个回答

5

可能是因为我刚刚更新到了1.5.18版本,但这看起来是有效的。我的唯一更改是添加了scope="context"。以下是我如何使用GELF appender实现的。

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
  <include resource="org/springframework/boot/logging/logback/base.xml"/>
  <springProperty scope="context" name="name" source="spring.application.name"/>

  <appender name="gelf" class="de.appelgriepsch.logback.GelfAppender">
    <server>192.168.1.113</server>
    <includeSource>true</includeSource>
    <includeMDC>true</includeMDC>
    <includeLevelName>true</includeLevelName>
    <additionalFields>name=${name}</additionalFields>
  </appender>
  <root>
    <appender-ref ref="gelf"/>
  </root>
</configuration>

0
如果您正在使用自定义的logback-spring.xml,则必须在引导程序中传递spring.application.name,而不是应用程序属性文件。否则,您的自定义logback文件将无法正确读取该属性。
您需要在bootstrap.yml中设置spring.application.name 请参见:http://cloud.spring.io/spring-cloud-sleuth/spring-cloud-sleuth.html

2
bootstrap.yml 应该仅在与 Spring Cloud 相关的情况下使用,它与此处的问题无关。 - tomerz
我将我的application.properties更改为bootstrap.properties。 - Francis Zabala
1
当未启用spring-cloud时,似乎无法正常工作。 - Archimedes Trajano

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接