时间:2021-05-20
Springboot默认集成的就是logback,logback相对来说是优秀于log4j的,log4j2也是参考了logback的设计。
自定义Appender非常简单,继承一下AppenderBase类即可。
可以看到有个AppenderBase,有个UnsynchronizedAppenderBase,还有个AsyncAppenderBase继承了UnsynchronizedAppenderBase。从名字就能看出来区别,异步的、普通的、不加锁的。
我们定义一个MongoDBAppender继承UnsynchronizedAppenderBase
public class MongoDBAppender extends UnsynchronizedAppenderBase<ILoggingEvent> { @Override protected void append(ILoggingEvent eventObject) { MongoTemplate mongoTemplate = ApplicationContextProvider.getBean(MongoTemplate.class); if (mongoTemplate != null) { final BasicDBObject doc = new BasicDBObject(); doc.append("level", eventObject.getLevel().toString()); doc.append("logger", eventObject.getLoggerName()); doc.append("thread", eventObject.getThreadName()); doc.append("message", eventObject.getFormattedMessage()); mongoTemplate.insert(doc, "log"); } } }必须要实现一个append方法,这个方法就是logback输出日志的地方,日志都保存在eventObject对象中,我们只需要获取对象里的值并做自己的处理即可。
我们可以想象为,系统的ConsoleAppender就是不停的System.out.print(eventObject.getXXX),而FileAppender就是用OutpuptStream输出到文件里。
我们要做的就是把日志保存到mongo里,Springboot已经提供了MongoTemplate模板,需要注意日志输出是随着系统启动就开始的,而刚开始时MongoTemplate还没有被初始化,是需要等待Spring给MongoTemplate赋值的。所以刚开始时为null,需要等spring初始化完毕,MongoTemplate才有值。
由于这个Appender不归spring管理,所以我采用单独获取bean的方式。其中ApplicationContextProvider如下:
上面mongo操作日志入库的比较简单,字段也没有用完,大家可以根据自己希望保存的属性来设计mongo的结构,然后入库。
pom.xml
<dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.4.2</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.1.11</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.11</version> </dependency>在Spring-logback.xml使用也很简单
只需要指明appender 的class即可。就是这么简单。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
SpringBoot中默认使用Logback进行日志输出,可以同时使用SpringBoot框架的配置文件application.yml或是通过logback的配
springboot日志默认采用logback进行输出,你可以对logback进行定制化,方法如下:在resources文件夹下建立logback.xml配置文
LogBack默认集成在SpringBoot中,是基于Slf4j的日志框架。默认情况下SpringBoot是以INFO级别输出到控制台。它的日志级别是:ALL<
一、logback日志技术介绍SpringBoot中使用的日志技术为logback。其与Log4J都出自同一人,性能要优于Log4J,是Log4J的替代者。在S
前言SpringBoot默认使用Logback,来打印日志,这里还想说的SLFJ(SimpleLoggingFacadeforJava),它们之间的关系,一张图