SpringBoot2.1-gradle-整合log4j2

SpringBoot2.1-gradle-整合log4j2

  • 简介
    • 注意
    • 一、修改build.gradle
      • 由于springboot本身自带的logback,会导致冲突。所以这块需要排除默认日志。
      • 然后添加log4j依赖
    • 二、log4j2集成方式
    • 三、properties文件
      • 这个可以从log4j官网中找到,可以根据自己需求更改一些参数即可。
      • 记录日志的级别

简介

最近在研究springboot+gradle。需要添加日志,现在springboot主流日志就属logback和log4j了。但是log4j后来抛弃了之前log4j的不足,以及吸取了优秀的logback的设计重新推出的一款新组件。log4j2的社区活跃很频繁而且更新的也很快。所以这篇主要是讲怎么集成log4j2的帖子。

注意

值得注意的是,spring boot 1.3版本支持log4j,在spring boot 1.4的版本中,就需要使用log4j2,否则会出现如下错误:
Project build error: ‘dependencies.dependency.version’ for org.springframework.boot:spring-boot-starter-log4j:jar is missing.

一、修改build.gradle

由于springboot本身自带的logback,会导致冲突。所以这块需要排除默认日志。

configurations {
	//remove default logger
	all*.exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
}

然后添加log4j依赖

	implementation('org.springframework.boot:spring-boot-starter-log4j2')

二、log4j2集成方式

log4j2主要有两种方式去集成:

  1. 使用 .properties 进行集成。
  2. 使用 .xml 进行集成。. 使用 .xml 进行集成。
    我在刚开始集成时,使用的是.properties的方式。但是中间出现了一些问题。所以改用了xml方式。
    博客链接: xml教程
    但是由于.properties方式的失败。导致我特别想用第一种方式搞出来。

三、properties文件

这个可以从log4j官网中找到,可以根据自己需求更改一些参数即可。

	# log4j2内部自身的日志级别
	status = error
	# 配置日志信息输出到哪里:err表示作为标准错误输出,还可以是一个文件路径或者一个URL
	dest = err
	# 配置名称
	name = PropertiesConfig
	
	# 自定义属性名称,以便在之后的配置中使用,如${filename}
	property.filename = target/rolling/rollingtest.log
	
	# 级别过滤(过滤日志记录)
	filter.threshold.type = ThresholdFilter
	# 只记录debug级别以上的日志,大小写都可以
	filter.threshold.level = debug
	
	# 控制台类型的日志输出源
	appender.console.type = Console
	# 名称 :唯一
	appender.console.name = STDOUT
	# 布局类型
	appender.console.layout.type = PatternLayout
	# 输出模板格式 这是springboot
	appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} -%5p ${PID:-} [%15.15t] %C{1.} [%t]: %m%n
	# 过滤级别 ThresholdFilter:低于级别的不输出
	appender.console.filter.threshold.type = ThresholdFilter
	# 记录日志的级别
	appender.console.filter.threshold.level = error
	
	# 滚动文件,会根据配置如文件大小或者时间自动生成一个新文件
	appender.rolling.type = RollingFile
	appender.rolling.name = RollingFile
	# 日志文件名称
	appender.rolling.fileName = ${filename}
	# 日志回滚的文件命名规则
	appender.rolling.filePattern = target/rolling2/test1-%d{MM-dd-yyyy}-%i.log.gz
	appender.rolling.layout.type = PatternLayout
	# 输出格式
	appender.rolling.layout.pattern = %d %p %C{1.} [%t] %m%n
	# 滚动日志的策略,即设置何时新建日志文件输出日志
	appender.rolling.policies.type = Policies
	# 设置时间
	appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
	# 指定多久滚动一次 单位跟着filePattern配置精度最后一位 ,这里就是2秒了
	appender.rolling.policies.time.interval = 2
	appender.rolling.policies.time.modulate = true
	# 日志文件的大小
	appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
	# 为了测试设置小一点
	appender.rolling.policies.size.size=1kb
	
	##  还有其他的触发条件如:CronTriggeringPolicy 按Cron表达式进行的 具体使用可自行搜索
	
	# 指定同一个文件夹下最多有几个日志文件时开始删除最旧的,创建新的
	appender.rolling.strategy.type = DefaultRolloverStrategy
	# 最多5个文件,其实还是看filePattern的i的值,当大于5后,就会自动覆盖了
	appender.rolling.strategy.max = 5
	
	rootLogger.level = info
	rootLogger.appenderRef.stdout.ref = STDOUT

记录日志的级别

这时候你会发现控制器里没有日志那是因为下面这句导致。解决方案: error => debug

	# 记录日志的级别
	appender.console.filter.threshold.level = error

交流群:112977357

你可能感兴趣的:(springboot)