1

我有一个 Spring Boot 应用程序,它(基本上)具有以下项目结构:

myapp/
    src/
        <All Java source code here>
    build.gradle
    application.yml
    logback.groovy

它的build.gradle依赖是:

dependencies {
    compile(
        'org.springframework.boot:spring-boot-starter-actuator'
        ,'org.springframework.boot:spring-boot-starter-jetty'
        ,'org.springframework.boot:spring-boot-starter-security'
        ,'org.springframework.boot:spring-boot-starter-thymeleaf'
        ,'org.apache.commons:commons-lang3:3.4'
        ,'ch.qos.logback:logback-parent:1.1.7'
    )
    compile('org.springframework.boot:spring-boot-starter-web') {
        exclude module: 'spring-boot-starter-tomcat'
    }
}

application.yml: _

logging:
  level:
    org.springframework.web: 'DEBUG'
server:
  error:
    whitelabel:
      enabled: false
spring:
  datasource:
    test-on-borrow: true
    validation-query: SELECT 1
  messages:
    basename: i18n/messages

logback.groovy

statusListener(OnConsoleStatusListener)

appender('CONSOLE', ConsoleAppender) {
    encoder(PatternLayoutEncoder) {
        pattern = '%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n'
    }
}

appender('ROLLING', RollingFileAppender) {
    encoder(PatternLayoutEncoder) {
        Pattern = '%d %level %thread %mdc %logger - %m%n'
    }
    rollingPolicy(TimeBasedRollingPolicy) {
        FileNamePattern = '/Users/myuser/logs/myapp/myapp-%d{yyyy-MM}.zip'
    }
}

当我运行时./gradlew bootRun -Pspring.config=.(其中spring.config=.暗示myapp/application.yml配置文件),我只看到控制台输出。没有任何内容被记录到/Users/myuser/logs/myapp/. 关于为什么的任何想法?


更新

我创建了一个使用我相同的 Logback 配置的准系统 Spring Boot 应用程序:

https://github.com/hotmeatballsoup/spring-boot-logback-example

克隆它并运行它:

./gradlew bootRun -Pspring.config=.

请注意,即使应用程序启动良好(您会看到很多控制台输出),它实际上并没有/var/log/spring-boot-logback-example/spring-boot-logback-example.log按预期创建文件!

4

4 回答 4

1

添加到 logback.groovy 的以下内容

root(DEBUG, ["CONSOLE", "ROLLING"])
于 2016-06-20T12:31:04.083 回答
0

在对您的代码进行以下更改后,我能够成功运行该应用程序:

  1. root(DEBUG, ["CONSOLE", "ROLLING"])在声明附加程序之后,将行logback.groovy移到最后一行
  2. 我将日志文件的路径从/var/log主目录更改为日志开始出现在控制台和日志文件中。目录中没有生成日志的原因/var/log是权限不足
于 2016-06-22T12:18:43.890 回答
0

创建一个src/main/resources文件夹并放入logback.groovy其中。

这对我来说适用于您的项目(从 Github 克隆)和以下 logback 文件:

import ch.qos.logback.classic.encoder.PatternLayoutEncoder
import ch.qos.logback.core.rolling.RollingFileAppender
import ch.qos.logback.core.rolling.TimeBasedRollingPolicy

import static ch.qos.logback.classic.Level.DEBUG

appender("FILE", RollingFileAppender) {
  file = "logFile.log"
  rollingPolicy(TimeBasedRollingPolicy) {
    fileNamePattern = "logFile.%d{yyyy-MM-dd}.log"
    maxHistory = 30
  }
  encoder(PatternLayoutEncoder) {
    pattern = "%-4relative [%thread] %-5level %logger{35} - %msg%n"
  }
}
root(DEBUG, ["FILE"])
于 2016-06-22T13:20:25.520 回答
0

使用 logback/spring boot 和 groovy 配置。自定义日志配置应该在一个名为logback-spring.groovy而不是logback.groovy的文件中 。该文件应该存在于 src/main/resources 中。

请参阅参考Spring Boot 日志记录文档

于 2017-02-15T21:12:11.703 回答