激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - SpringBoot中logback日志保存到mongoDB的方法

SpringBoot中logback日志保存到mongoDB的方法

2021-02-06 11:33天涯淚小武 Java教程

這篇文章主要介紹了SpringBoot中logback日志保存到mongoDB的方法,

?Springboot默認集成的就是logback,logback相對來說是優秀于log4j的,log4j2也是參考了logback的設計。

自定義Appender非常簡單,繼承一下AppenderBase類即可。

可以看到有個AppenderBase,有個UnsynchronizedAppenderBase,還有個AsyncAppenderBase繼承了UnsynchronizedAppenderBase。從名字就能看出來區別,異步的、普通的、不加鎖的。

我們定義一個MongoDBAppender繼承UnsynchronizedAppenderBase

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<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使用也很簡單 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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即可。就是這么簡單。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://blog.csdn.net/tianyaleixiaowu/article/details/73332313

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美a∨亚洲欧美亚洲 | 久久久噜噜噜久久熟有声小说 | 羞羞草视频 | 国产精品高潮99久久久久久久 | 最新福利在线 | 久久千人斩 | 北原夏美av | 欧美激情 在线播放 | 欧美成人精品h版在线观看 在线2区 | 国产在线观看一区二区三区 | 成人在线激情视频 | 激情视频免费看 | 国产精品久久久久久影院8一贰佰 | 91成人影院 | 密室逃脱第一季免费观看完整在线 | 91成人午夜性a一级毛片 | 一本色道久久综合亚洲精品图片 | 一区二区三区视频在线播放 | 免费在线观看毛片视频 | 久章草影院 | 91av在线免费 | 久久91久久久久麻豆精品 | 亚洲欧美日韩一区二区三区在线观看 | 久久99精品国产自在现线 | 啪啪激情 | 国产一级片91 | 久久久成人一区二区免费影院 | freexxxhd喷水| 永久免费av片在线观看全网站 | 91久久精品一二三区 | 精品成人av一区二区在线播放 | 久久人人人 | 中文字幕一区在线观看视频 | 成人免费久久 | 免费一级欧美大片视频 | 72pao成人国产永久免费视频 | 精品国产91久久久 | 国产艳妇av视国产精选av一区 | 久久久久av电影 | 欧美成人午夜精品久久久 | 草莓福利视频在线观看 |