2017-06-13 30 views
0

我试图让Spring Boot与Logback一起工作,并且遇到了一个我无法弄清楚的错误/问题。Spring引导应用程序遇到logback.groovy配置文件的问题

重现此问题的全部,我创建了一个GitHub的Spring Boot Example repo,但本质上,这是我application.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所以我的Spring Boot应用程序应该没有问题在那里创建日志文件并写入他们。

当我在本地运行应用程序时,我没有得到错误/异常/警告;在控制台输出中一切看起来都很完美。然后我启动一个浏览器并指向http://localhost:9200,它应该返回一个简单的虚拟消息,但是没有任何反应。更糟糕的是,控制台中没有任何事情发生。

唯一的线索是,我已经关闭了该应用程序后,如果我去/opt/springbootexample/logs/springbootexample.log,其内容是:

#logback.classic pattern: %msg%n 

告诉我,也许有一些配置错误在我logback.groovyFileAppender也许?任何想法/想法?

回答

1

您的应用程序工作正常(网页加载正确,并显示“Spring Boot!的问候!”),您的日志记录配置只是有点过分。

第一个问题是您忘记将非滚动文件appender添加到您的根记录器。就在的logback.groovy底部添加"FILE"到列表中,像这样:

root(INFO, ["FILE", "CONSOLE", "ROLLING"]) 
//   ^^^^^^^ 

和日志的作品。如果没有这个,appender会被初始化,这个文件是用“怪异的头文件”创建的(因为您选择使用outputPatternAsHeader = true),并且没有任何内容会被追加,因为您选择不这样做。

所以,唯一奇怪的问题就是为什么网页不加载你......但是,也许你会得到更多的信息,如果该日志工程:)

尝试的东西LOG_PATH简单得多,如def LOG_PATH = '/tmp/foo' ,因为如果这是错误的服务器将关闭,显然该页面将无法加载。

如果路径指向的东西存在并且是可写的,它将起作用。

相关问题