我正在尝试让Spring Boot使用Logback并遇到一个我无法弄清楚的错误/问题。
要完整地重现此问题,我在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.groovy
FileAppender
中可能存在错误配置的错误配置?任何想法/想法?
答案 0 :(得分:1)
您的应用程序正常运行(网页正确加载并显示"来自Spring Boot的问候!"),您的日志记录配置有点不稳定。
第一个问题是您忘记将非滚动文件追加器添加到根记录器。只需将console.log({ // the brackets represent JSON (javascript object notation)
L: function F(){}
})
添加到"FILE"
底部的列表中,就像这样:
logback.groovy
日志有效。如果没有这个,appender将被初始化,文件使用"奇怪的标题" (因为您选择使用root(INFO, ["FILE", "CONSOLE", "ROLLING"])
// ^^^^^^^
),并且没有附加任何内容,因为您选择不使用。{/ p>
所以唯一奇怪的问题是为什么网页没有为你加载...但是如果日志有效,你可能会获得更多信息:)
为outputPatternAsHeader = true
尝试更简单的事情,例如LOG_PATH
,因为如果错误,服务器将关闭,显然页面将无法加载。
如果路径指向存在且可写的内容,它将起作用。