带有 Spring Boot 1.3.5 (gradle) 的 Log4j 2.6(属性文件)不工作
Log4j 2.6 (properties file) with Spring Boot 1.3.5 (gradle) not working
我一直在尝试将 Log4j 2.6(属性文件)与 Spring Boot 1.3.5 版本 和 Spring 的默认日志记录启动。我无法找出确切的问题。
这是我的 build.gradle 文件:
buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "org.jfrog.buildinfo:build-info-extractor-gradle:3.1.1"
classpath 'org.ajoberstar:gradle-git:1.3.0-milestone.1'
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.3.RELEASE")
}
}
...
dependencies {
compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '1.3.5.RELEASE'
providedRuntime group: 'org.springframework.boot', name: 'spring-boot-starter-tomcat', version: '1.3.5.RELEASE'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-actuator', version: '1.3.5.RELEASE'
compile group: 'org.apache.kafka', name: 'kafka-clients', version: '0.10.1.0'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-log4j2', version: '1.3.5.RELEASE'
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.6'
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.6'
testCompile group: 'org.testng', name: 'testng', version: '6.8.8'
testCompile group: 'org.json', name: 'json', version: '20160212'
testCompile 'org.glassfish.jersey.core:jersey-client:2.22.2'
testCompile group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '1.3.5.RELEASE'
testCompile group: 'org.apache.kafka', name: 'kafka_2.11', version: '0.10.1.0'
}
configurations {
all*.exclude module: 'spring-boot-starter-logging'
providedRuntime
}
这是我的log4j2.properties文件:
name = PropertiesConfig
property.logDir = logs
property.filename = ingestion
property.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
appenders = console, rolling
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = ${pattern}
appender.rolling.type = RollingFile
appender.rolling.name = RollingFile
appender.rolling.fileName = ${logDir}/${filename}.log
appender.rolling.filePattern = ${logDir}/${filename}.%d{yyyy-MM-dd}.log.gz
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = ${pattern}
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 2
appender.rolling.policies.time.modulate = true
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
appender.rolling.policies.size.size=100MB
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.max = 5
loggers = rolling
logger.rolling.name = com.dir.mysubdir
logger.rolling.level = WARN
#logger.rolling.additivity = false
logger.rolling.appenderRefs = rolling
logger.rolling.appenderRef.rolling.ref = RollingFile
# Root logger option
rootLogger.level = WARN
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT
我已经研究了多个关于此的 SO 主题,似乎所有属性都已正确设置。但是有些我无法找出为什么它没有按照我的配置记录到文件和控制台。
一个空日志文件logs/ingestion.log如log4j2.properties中配置 文件在我启动运行应用程序时创建。
如果您正在使用 Spring 引导,那么您可以配置登录 application.properties
或 application.yml
。
yml配置
logging:
file: server.log
level:
'com.myapp': INFO
属性配置
logging.file=server.log
logging.level.com.myapp=INFO
参考http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html了解更多详情
我好像错过了在 application.properties 文件中包含 日志配置文件 参数,因此 log4j被检测到并没有任何错误地加载但未被 spring-boot 使用。
添加以下行解决了问题。
logging.config= # location of logging config file
[P.S.]:找到解决我问题的方法:
我一直在尝试将 Log4j 2.6(属性文件)与 Spring Boot 1.3.5 版本 和 Spring 的默认日志记录启动。我无法找出确切的问题。
这是我的 build.gradle 文件:
buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "org.jfrog.buildinfo:build-info-extractor-gradle:3.1.1"
classpath 'org.ajoberstar:gradle-git:1.3.0-milestone.1'
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.3.RELEASE")
}
}
...
dependencies {
compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '1.3.5.RELEASE'
providedRuntime group: 'org.springframework.boot', name: 'spring-boot-starter-tomcat', version: '1.3.5.RELEASE'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-actuator', version: '1.3.5.RELEASE'
compile group: 'org.apache.kafka', name: 'kafka-clients', version: '0.10.1.0'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-log4j2', version: '1.3.5.RELEASE'
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.6'
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.6'
testCompile group: 'org.testng', name: 'testng', version: '6.8.8'
testCompile group: 'org.json', name: 'json', version: '20160212'
testCompile 'org.glassfish.jersey.core:jersey-client:2.22.2'
testCompile group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '1.3.5.RELEASE'
testCompile group: 'org.apache.kafka', name: 'kafka_2.11', version: '0.10.1.0'
}
configurations {
all*.exclude module: 'spring-boot-starter-logging'
providedRuntime
}
这是我的log4j2.properties文件:
name = PropertiesConfig
property.logDir = logs
property.filename = ingestion
property.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
appenders = console, rolling
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = ${pattern}
appender.rolling.type = RollingFile
appender.rolling.name = RollingFile
appender.rolling.fileName = ${logDir}/${filename}.log
appender.rolling.filePattern = ${logDir}/${filename}.%d{yyyy-MM-dd}.log.gz
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = ${pattern}
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 2
appender.rolling.policies.time.modulate = true
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
appender.rolling.policies.size.size=100MB
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.max = 5
loggers = rolling
logger.rolling.name = com.dir.mysubdir
logger.rolling.level = WARN
#logger.rolling.additivity = false
logger.rolling.appenderRefs = rolling
logger.rolling.appenderRef.rolling.ref = RollingFile
# Root logger option
rootLogger.level = WARN
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT
我已经研究了多个关于此的 SO 主题,似乎所有属性都已正确设置。但是有些我无法找出为什么它没有按照我的配置记录到文件和控制台。
一个空日志文件logs/ingestion.log如log4j2.properties中配置 文件在我启动运行应用程序时创建。
如果您正在使用 Spring 引导,那么您可以配置登录 application.properties
或 application.yml
。
yml配置
logging:
file: server.log
level:
'com.myapp': INFO
属性配置
logging.file=server.log
logging.level.com.myapp=INFO
参考http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html了解更多详情
我好像错过了在 application.properties 文件中包含 日志配置文件 参数,因此 log4j被检测到并没有任何错误地加载但未被 spring-boot 使用。
添加以下行解决了问题。
logging.config= # location of logging config file
[P.S.]:找到解决我问题的方法: