Springboot中整合log4j
由于在Springboot中本身有自带一个spring-boot-starter-logging 日志输出包,所以在应用log4J时会导致日志冲突的情况。如下:
当然,网上有的朋友说不推荐使用log4j 了,但是在旧系统迁移到Springboot下之后,总不可能把原来的代码用了log4j的全部改掉一遍吧,这不太现实。因此我们有了Springboot下引用 log4j的需求。言归正传,我们来看看如何解决:
1. 首先,你得找到POM.xml中排除掉Logging
2. 然后加上log4j
3.接下来就是创建一个log4j.properties文件
log4j.properties:
*### 设置
log4j.rootLogger =DEBUG,stdout,D,E
输出信息到控制抬
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
出DEBUG 级别以上的日志到=E://logs/error.log
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = E:/logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
输出ERROR 级别以上的日志到=E://logs/error.log
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =E:/logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n*
4.最后我们来看看程序中的调用方式:
有的朋友会疑问为什么我这里用的 是slf4j ,我对slf4解释一下:SLF4J,是简单日志门面(Simple Logging Facade for Java)的缩写,它不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志System,所以这只是为了扩展,其实就是个接口而已,不影响咱们使用log4j 。
最后运行起来看看效果:
这是我调用一个getUser请求,参数 i=1 返回的结果
我的getUser方法这样做的,注解返回是个json。
至此, Springboot中引用Log4j 就完成啦 !