Spring boot Spring启动应用程序在logback.groovy配置文件中遇到问题

Spring boot Spring启动应用程序在logback.groovy配置文件中遇到问题,spring-boot,logback,fileappender,logback-groovy,Spring Boot,Logback,Fileappender,Logback Groovy,我试图让Spring Boot与Logback一起工作,但遇到了一个我无法解决的错误/问题 为了完整地再现这个问题,我在GitHub上创建了一个,但本质上,这是我的应用程序。yml: logging: config: 'logback.groovy' server: port: 9200 error: whitelabel: enabled: false 还有我的logback.groovy: statusListener(OnConsoleStatusList

我试图让Spring Boot与Logback一起工作,但遇到了一个我无法解决的错误/问题

为了完整地再现这个问题,我在GitHub上创建了一个,但本质上,这是我的
应用程序。yml

logging:
  config: 'logback.groovy'
server:
  port: 9200
  error:
    whitelabel:
      enabled: false
还有我的
logback.groovy

statusListener(OnConsoleStatusListener)

def LOG_PATH = '/opt/springbootexample/logs/springbootexample'

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

appender('FILE', FileAppender) {
    file = "${LOG_PATH}.log"
    encoder(PatternLayoutEncoder) {
        pattern = '%msg%n'
        outputPatternAsHeader = true
    }
}

appender('ROLLING', RollingFileAppender) {
    encoder(PatternLayoutEncoder) {
        Pattern = '%d %level %thread %mdc %logger - %m%n'
    }
    rollingPolicy(TimeBasedRollingPolicy) {
        fileNamePattern = "${LOG_PATH}-%d{yyyy-MM}.zip"
        maxHistory = 30
        totalSizeCap = '1KB'
    }
}

root(INFO, ["CONSOLE", "ROLLING"])
我已经确保存在
/opt/springbootexample/logs
,我运行了
chmod-R 777/opt/springbootexample
,所以我的springboot应用程序在那里创建日志文件并写入它们应该没有问题

当我在本地运行应用程序时,我没有收到任何错误/异常/警告;控制台输出中的一切看起来都非常好。然后我启动一个浏览器并将其指向
http://localhost:9200
,它应该返回一条简单的伪消息,但是什么也没有发生。更糟糕的是,控制台中也不会发生任何事情

唯一的线索是,在我关闭应用程序后,如果我转到
/opt/springbootexample/logs/springbootexample.log
,它的内容是:

#logback.classic pattern: %msg%n
这说明我的
logback.groovy
FileAppender
中可能存在配置错误?有什么想法吗?

您的应用程序工作正常(网页正确加载并显示“来自Spring Boot的问候!”),您的日志记录配置有点不稳定

第一个问题是您忘记将非滚动文件追加器添加到根记录器。只需将
“FILE”
添加到
logback.groovy底部的列表中,如下所示:

root(INFO, ["FILE", "CONSOLE", "ROLLING"])
//          ^^^^^^^
而且日志工作正常。如果不这样做,则会初始化appender,即使用“奇怪的头”创建文件(因为您选择使用
outputPatternAsHeader=true
),并且不会追加任何内容,因为您选择不这样做

所以唯一奇怪的问题是为什么网页没有为你加载。。。但如果日志正常运行,您可能会获得更多信息:)

对于
LOG_PATH
,请尝试更简单的方法,例如
def LOG_PATH='/tmp/foo'
,因为如果这样做错误,服务器将关闭,并且显然页面将无法加载

如果路径指向某个已存在且可写的对象,则该路径将起作用