【发布时间】:2017-05-18 02:22:32
【问题描述】:
我使用的是 Spring boot 1.3.6.RELEASE 和 log4j2.yml 如下:
Configuration:
status: info
Properties:
Property:
name: log-path
value: "/dvl-log/pol/apps/logs/api"
Appenders:
Console:
- name: Console
target: SYSTEM_OUT
PatternLayout:
Pattern: "%d{HH:mm:ss.SSS} %-5level %logger{1} - %msg%n"
Loggers:
Root:
level: info
AppenderRef:
- ref: Console
Logger:
- name: com.company.api
level: trace
additivity: false
AppenderRef:
- ref: Console
level: trace
使用以下代码的日志记录运行良好。
@Slf4j
public class LogExample{
public void logMethods(String className,String methodName){
log.trace("{} >> {}", className, methodName);
}
}
但是当我升级到 Spring Boot 1.4.3.RELEASE 时,记录器不工作了。
我升级到 1.4.3 后的新 build.gradle 是(只是版本变化)
version '1.0'
// dependencies for command line
buildscript {
ext {
springBootVersion = '1.4.3.RELEASE'
dependencyManagementVersion = '0.5.2.RELEASE'
}
repositories {
jcenter()
}
dependencies {
classpath "org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}"
classpath "io.spring.gradle:dependency-management-plugin:${dependencyManagementVersion}"
}
}
apply plugin: "io.spring.dependency-management"
apply plugin: 'java'
apply plugin: 'spring-boot'
apply plugin: 'war'
apply plugin: 'eclipse'
apply plugin: 'idea'
// JDK 8
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
repositories {
jcenter()
}
ext {
springCloudVersion = 'Brixton.SR4'
springBootVersion = '1.4.3.RELEASE'
swaggerVersion = '2.4.0'
jodaTimeVersion = '2.9.4'
jacksonJodaVersion = '2.5.1'
junitVersion = '4.12'
springWsTestVersion = '2.2.3.RELEASE'
lombokVersion = '1.16.10'
jsonPathVersion = '2.2.0'
ehcacheVersion = '3.2.0'
javaxCacheVersion = '1.0.0'
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
mavenBom "org.springframework.boot:spring-boot-starter-parent:${springBootVersion}"
}
}
sourceSets {
test {
java {
srcDir 'src/test/unit/java'
}
resources {
srcDir 'src/test/unit/resources'
}
}
}
dependencies {
/* core libraries */
compile('org.springframework.cloud:spring-cloud-starter-config') {
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
}
compile('org.springframework.boot:spring-boot-starter-web') {
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
}
compile("org.springframework.boot:spring-boot-starter-hateoas"){
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
}
compile 'org.springframework.ws:spring-ws-core'
// logging
compile('org.springframework.boot:spring-boot-starter-log4j2')
compile('com.fasterxml.jackson.dataformat:jackson-dataformat-yaml')
compile('com.fasterxml.jackson.core:jackson-databind')
// embedded server
providedRuntime('org.springframework.boot:spring-boot-starter-tomcat')
// https://mvnrepository.com/artifact/org.projectlombok/lombok-maven
compile "org.projectlombok:lombok:${lombokVersion}"
// https://mvnrepository.com/artifact/com.jayway.jsonpath/json-path
// A Java DSL for reading JSON documents
compile "com.jayway.jsonpath:json-path:${jsonPathVersion}"
/* plugins */
/* test libraries */
// unit
testCompile "junit:junit:${junitVersion}"
testCompile "org.springframework.boot:spring-boot-starter-test"
testCompile "org.springframework.ws:spring-ws-test:${springWsTestVersion}"
}
war {
archiveName = "${project.name}.war"
}
我在这里缺少什么? TIA
我想添加更多详情:
升级到 Spring Boot 1.4.3 后,类路径上有 log4j-api:2.6.2、log4j-core:2.6.2 和 log4j-slf4j-impl:2.2.6。问题是附加程序不适用于trace 级别,因为我正在获取info 或更高级别的日志。
【问题讨论】:
-
升级后检查 log4j2 是否在你的类路径中。
-
@phani 升级后类路径上有 log4j-api:2.6.2、log4j-core:2.6.2 和 log4j-slf4j-impl:2.2.6 ... 事情是 appender 不是为跟踪级别工作,因为我正在获取信息或更高级别的日志。
-
我没有使用 log4j2 的第一手经验,所以我只能提供一些输入:考虑到某种形式的日志记录正在工作,我猜这个问题是由于
log4j2.yml的内容造成的.在新旧版本之间检查 SpringBoot 更新版本的 log4j2。 -
@phan 我认为
log4j2.yml应该独立于 Spring Boot 版本,对吧?相同的 log4j2.yml 适用于 Spring Boot 1.3.6,为什么它不适用于 1.4.3?我真的不明白这个。 -
@phani 非常感谢您抽出宝贵的时间。最后我解决了这个问题。我已经发布了我解决问题的方式,如果您有任何进一步的建议,请告诉我:)
标签: spring logging spring-boot log4j slf4j