Spring 示例引导和登录
Spring Boot and Logback by Example
我有一个 Spring 引导应用程序,它(基本上)具有以下项目结构:
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/
没有任何记录。关于原因有什么想法吗?
更新
我创建了一个准系统 Spring 使用我相同的 Logback 配置的引导应用程序:
https://github.com/hotmeatballsoup/spring-boot-logback-example
通过 运行ning:
克隆它并 运行 它
./gradlew bootRun -Pspring.config=.
请注意,即使应用程序启动正常(并且您会看到很多 console 输出),它实际上并没有创建 /var/log/spring-boot-logback-example/spring-boot-logback-example.log
文件预期!
添加以下内容到 logback.groovy
root(DEBUG, ["CONSOLE", "ROLLING"])
在对您的代码进行以下更改后,我能够成功 运行 应用程序:
- 将
logback.groovy
中的第 root(DEBUG, ["CONSOLE", "ROLLING"])
行移动到最后一行,声明附加程序后
- 我将日志文件的路径从
/var/log
更改为主目录,日志开始出现在控制台和日志文件中。 /var/log
目录中未生成日志的原因是缺少权限
创建一个 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"])
使用 logback/spring 引导和 groovy 配置。自定义日志配置应位于名为 logback-spring.groovy 的文件中,而不是 logback.groovy
该文件应存在于 src/main/resources.
中
参见参考文献spring boot logging docs
我有一个 Spring 引导应用程序,它(基本上)具有以下项目结构:
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/
没有任何记录。关于原因有什么想法吗?
更新
我创建了一个准系统 Spring 使用我相同的 Logback 配置的引导应用程序:
https://github.com/hotmeatballsoup/spring-boot-logback-example
通过 运行ning:
克隆它并 运行 它./gradlew bootRun -Pspring.config=.
请注意,即使应用程序启动正常(并且您会看到很多 console 输出),它实际上并没有创建 /var/log/spring-boot-logback-example/spring-boot-logback-example.log
文件预期!
添加以下内容到 logback.groovy
root(DEBUG, ["CONSOLE", "ROLLING"])
在对您的代码进行以下更改后,我能够成功 运行 应用程序:
- 将
logback.groovy
中的第root(DEBUG, ["CONSOLE", "ROLLING"])
行移动到最后一行,声明附加程序后 - 我将日志文件的路径从
/var/log
更改为主目录,日志开始出现在控制台和日志文件中。/var/log
目录中未生成日志的原因是缺少权限
创建一个 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"])
使用 logback/spring 引导和 groovy 配置。自定义日志配置应位于名为 logback-spring.groovy 的文件中,而不是 logback.groovy 该文件应存在于 src/main/resources.
中参见参考文献spring boot logging docs