iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >SpringBoot中logback日志保存到mongoDB的示例分析
  • 322
分享到

SpringBoot中logback日志保存到mongoDB的示例分析

springbootlogbackmongodb 2023-05-30 21:05:12 322人浏览 安东尼
摘要

小编给大家分享一下SpringBoot中logback日志保存到mongoDB的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!springboot默认集

小编给大家分享一下SpringBoot中logback日志保存到mongoDB的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

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如下:

@Component public class ApplicationContextProvider implements ApplicationContextAware {   private static ApplicationContext context;    public static ApplicationContext getApplicationContext() {     return context;   }    @Override   public void setApplicationContext(ApplicationContext ac)       throws BeansException {     context = ac;   }    public static <T> T getBean(Class<T> tClass) {     return context.getBean(tClass);   }    public static <T> T getBean(String name, Class<T> tClass) {     return context.getBean(name, tClass);   } }

上面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使用也很简单 

<?xml version="1.0" encoding="UTF-8"?> <configuration>   <include resource="org/springframework/boot/logging/logback/base.xml" />    <appender name="MY_FILE" class="com.example.demo.mongo.MongoDBAppender">   </appender>   <!-- 测试环境+开发环境. 多个使用逗号隔开. -->   <springProfile name="test,dev">     <logger name="org.springframework.WEB" level="INFO">       <appender-ref ref="MY_FILE"/>     </logger>     <logger name="com.example" level="INFO" />   </springProfile>   </configuration>

只需要指明appender 的class即可。

以上是“SpringBoot中logback日志保存到mongoDB的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: SpringBoot中logback日志保存到mongoDB的示例分析

本文链接: https://www.lsjlt.com/news/221413.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot中logback日志保存到mongoDB的示例分析
    小编给大家分享一下SpringBoot中logback日志保存到mongoDB的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Springboot默认集...
    99+
    2023-05-30
    springboot logback mongodb
  • SpringBoot中logback日志怎么保存到mongoDB
    本篇内容介绍了“SpringBoot中logback日志怎么保存到mongoDB”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!自定义Appe...
    99+
    2023-06-08
  • Java中springboot日志管理的示例分析
    这篇文章主要介绍了Java中springboot日志管理的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Java是什么Java是一门面向对象编程语言,可以编写桌面应用...
    99+
    2023-06-15
  • SpringBoot中Log日志集成的示例分析
    这篇文章主要介绍SpringBoot中Log日志集成的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、日志的分类1、名字分类log4j :log for java (因为for和4读音差不多,所以交log4...
    99+
    2023-06-22
  • Linux中日志的示例分析
    这篇文章主要介绍Linux中日志的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!日志的三种类型#内核及系统日志:这种日志数据由系统服务rsyslog统一管理,根据其主配置文件/etc/rsyslog.conf...
    99+
    2023-06-27
  • logBack配置日志文件及编码配置的示例分析
    这篇文章主要介绍了logBack配置日志文件及编码配置的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。logback输出到文件文件大小设置问题目前网上能搜到的关于输出...
    99+
    2023-06-20
  • springboot项目配置logback日志系统的实现示例
    这篇文章主要介绍了springboot项目配置logback日志系统的实现示例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。记录springboot项目配置logback日志...
    99+
    2023-06-14
  • ELK 5.0.1+Filebeat5.0.1实时监控MongoDB日志并使用正则解析mongodb日志的示例分析
    ELK 5.0.1+Filebeat5.0.1实时监控MongoDB日志并使用正则解析mongodb日志的示例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴...
    99+
    2024-04-02
  • Springboot异常日志输出方式的示例分析
    小编给大家分享一下Springboot异常日志输出方式的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!lombok插件使用引入依赖,在项目中使用Lombok可以减少很多重复代码的书写。比如说getter/sette...
    99+
    2023-06-22
  • MySQL中日志记录的示例分析
    小编给大家分享一下MySQL中日志记录的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、SQL命令历史~/.mysql_history 记录了...
    99+
    2023-06-20
  • mysql中日志体系的示例分析
    这篇文章主要介绍了mysql中日志体系的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 一、 mysql...
    99+
    2024-04-02
  • springboot实现将自定义日志格式存储到mongodb中
    步骤如下 首先定义封装所需要的日志信息的实体类 public class MyLog { //根据需要定义字段 @Id privat...
    99+
    2024-04-02
  • ELK 5.0.1+Filebeat5.0.1 for LINUX RHEL6.6 监控MongoDB日志的示例分析
    本篇文章为大家展示了ELK 5.0.1+Filebeat5.0.1 for LINUX RHEL6.6 监控MongoDB日志的示例分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍...
    99+
    2024-04-02
  • laravel中错误与日志的示例分析
    小编给大家分享一下laravel中错误与日志的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!日志laravel中的日志是基于monolog而封装的。laravel在它上面做了几个事情:把monolog中的addIn...
    99+
    2023-06-14
  • MySQL中死锁与日志的示例分析
    这篇文章将为大家详细讲解有关MySQL中死锁与日志的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。最近线上 MySQL 接连发生了几起数据异常,都是在凌晨爆发,由...
    99+
    2024-04-02
  • sqlserver2008日志收缩的示例分析
    这篇文章主要介绍了sqlserver2008日志收缩的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。&...
    99+
    2024-04-02
  • Logback和Log4j2日志框架性能对比与调优方式的示例分析
    这篇文章主要介绍Logback和Log4j2日志框架性能对比与调优方式的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!性能测试logback同步日志耗时未经过任何调优,采用Logback默认配置得出上图,一百...
    99+
    2023-06-22
  • MongoDB中chunk的示例分析
    这篇文章主要介绍MongoDB中chunk的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!    MongoDB中,在使用到分片的时候,常常会用到chunk的概念,chunk是指一个集合数...
    99+
    2023-06-14
  • log4j2中日志异步打印的示例分析
    这篇文章给大家分享的是有关log4j2中日志异步打印的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。log4j2支持日志的异步打印,日志异步输出的好处在于,使用单独的进程来执行日志打印的功能,可以提高日志...
    99+
    2023-05-30
    log4j2
  • Springboot内外部logback多环境配置的示例分析
    这篇文章给大家分享的是有关Springboot内外部logback多环境配置的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、概述SpringBoot官方文档Springboot 默认读取的是项目内的 ...
    99+
    2023-06-26
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作