Maven/Gradle 在Spring Boot中配置log4j

本文介绍了如何在Maven和Gradle构建的Spring Boot项目中配置Log4j2,解决日志输出问题。在Maven项目中,需在pom.xml引入log4j2依赖;而在Gradle项目,需要更新依赖并使用log4j2代替已移除的log4j。同时,添加log4j2.properties配置文件,指定日志输出级别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求:将info和error信息用日志输出,方便日后查看排错。

一、Maven项目

1、引入log4j的依赖(pom.xml)

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter</artifactId>
  <exclusions>
    <exclusion>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-logging</artifactId>
    </exclusion>
  </exclusions>
</dependency>

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-log4j</artifactId>
</dependency>
2、添加log4j.properties配置文件(resources/log4j.properties)

#log4j.rootLogger=CONSOLE,info,error,DEBUG
#调试log4j的错误时打开
log4j.rootLogger=info,error,CONSOLE,DEBUG
#上线时打开,不需再打印错误
#log4j.rootLogger=error

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n

log4j.logger.info=info
log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.info.datePattern='.'yyyy-MM-dd
log4j.appender.info.Threshold = info
log4j.appender.info.append=true
#log4j.appender.info.File=/usr/local/api/logs/info/info.log
#log4j.appender.info.File=/Users/yelongyang/Downloads/logs/info/info.log

log4j.logger.error=error
log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.layout=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.error.datePattern='.'yyyy-MM-dd
log4j.appender.error.Threshold = error
log4j.appender.error.append=true
#log4j.appender.error.File=/usr/local/api/logs/error/error.log
#log4j.appender.error.File=/Users/yelongyang/Downloads/logs/error/error.log

log4j.logger.DEBUG=DEBUG
log4j.appender.DEBUG=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DEBUG.layout=org.apache.log4j.PatternLayout
log4j.appender.DEBUG.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.DEBUG.datePattern='.'yyyy-MM-dd
log4j.appender.DEBUG.Threshold = DEBUG
log4j.appender.DEBUG.append=true
#log4j.appender.DEBUG.File=/usr/local/api/logs/debug/debug.log
#log4j.appender.DEBUG.File=/Users/yelongyang/Downloads/logs/debug/debug.log

### Debug
log4j.logger.com.mybatis=DEBUG
log4j.logger.com.mybatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.mybatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.mybatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG

##本地环境
log4j.appender.info.File=E:/Mzj/logs/info/info.log
log4j.appender.error.File=E:/Mzj/logs/error/error.log
log4j.appender.DEBUG.File=E:/Mzj/logs/debug/debug.log

#生产环境
#log4j.appender.info.File=/usr/local/spring-boot-api/logs/info/info.log
#log4j.appender.error.File=/usr/local/spring-boot-api/logs/error/error.log
#log4j.appender.DEBUG.File=/usr/local/spring-boot-api/logs/debug/debug.log
二、Gradle项目

1、引入log4j的依赖(build.gradle)

一开始百度用的这个

configurations {
    compile.exclude group:'ch.qos.logback'
}

dependencies {
    
    compile ("org.springframework.boot:spring-boot-starter-web") {
        exclude module: 'org.springframework.boot:spring-boot-starter-logging'
    }
     compile ('org.springframework.boot:spring-boot-starter-log4j')
     
}

结果报错:Error:Cause: org.gradle.internal.component.external.model.DefaultModuleComponentSelector

百思不得其解,再后来输入gradlew build指令得到以下错误信息


后来看到网上说

log4j是EOL,因此从Spring Boot 1.4起已经从Spring Boot 删除了如果要使用log4j,请使用org.springframework.boot:spring-boot-starter-log4j2

改后就ok了,就是上上图加个2,被这个2了一整天。23333

2、添加log4j2.properties配置文件(注意这里也有2)(resources/log4j2.properties)

status = error
name = PropertiesConfig

property.filename = target/rolling/rollingtest.log

filters = threshold

filter.threshold.type = ThresholdFilter
filter.threshold.level = debug

#appenders = console, I, E
#不要输出到console,要养成看日志文件的习惯
appenders =I, E

#appender.console.type = Console
#appender.console.name = STDOUT
#appender.console.target = SYSTEM_OUT
#appender.console.layout.type = PatternLayout
#appender.console.layout.pattern = %-d{yyyy-MM-dd HH:mm:ss} [ %p ] [ %c ] %m%n

appender.I.type = RollingFile
appender.I.name = InfoRollingFile
appender.I.fileName = /tsingche_ups/logs/info.log
appender.I.filePattern = /tsingche_ups/logs/info_%d{yyyy-MM-dd}_%i.log
appender.I.layout.type = PatternLayout
appender.I.layout.pattern = %-d{yyyy-MM-dd HH:mm:ss} [ %p ] [ %c ] %m%n
appender.I.policies.type = Policies
appender.I.policies.time.type = TimeBasedTriggeringPolicy
appender.I.policies.time.interval = 1
appender.I.policies.time.modulate = true
appender.I.policies.size.type = SizeBasedTriggeringPolicy
appender.I.policies.size.size=20M
appender.I.strategy.type = DefaultRolloverStrategy
appender.I.strategy.max = 100


appender.E.type = RollingFile
appender.E.name = ErrorRollingFile
appender.E.fileName = /tsingche_ups/logs/error.log
appender.E.filePattern = /tsingche_ups/logs/error_%d{yyyy-MM-dd}_i.log
appender.E.layout.type = PatternLayout
appender.E.layout.pattern = %-d{yyyy-MM-dd HH:mm:ss} [ %p ] [ %c ] %m%n
appender.E.policies.type = Policies
appender.E.policies.time.type = TimeBasedTriggeringPolicy
appender.E.policies.time.interval = 1
appender.E.policies.time.modulate = true
appender.E.policies.size.type = SizeBasedTriggeringPolicy
appender.E.policies.size.size=20M
appender.E.strategy.type = DefaultRolloverStrategy
appender.E.strategy.max = 100


rootLogger.level = info
#rootLogger.appenderRefs = stdout,I,E
rootLogger.appenderRefs =I,E
#rootLogger.appenderRef.stdout.ref = STDOUT
rootLogger.appenderRef.I.ref = InfoRollingFile
rootLogger.appenderRef.I.level = info
rootLogger.appenderRef.E.ref = ErrorRollingFile
rootLogger.appenderRef.E.level = error
至此就配置成功了。

把BrowseController换成你自己的类名就好了。

private Logger logger = Logger.getLogger(BrowseController.class);











评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值