最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot實(shí)現(xiàn)將自定義日志格式存儲(chǔ)到mongodb中

 更新時(shí)間:2021年07月26日 14:45:56   作者:從放棄到入門  
這篇文章主要介紹了springboot實(shí)現(xiàn)將自定義日志格式存儲(chǔ)到mongodb中的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

步驟如下

首先定義封裝所需要的日志信息的實(shí)體類

public class MyLog {
       //根據(jù)需要定義字段
        @Id
        private String id;
        private Date ts;
        private String level;
        private String msg;
        private String thread;
       
       //屬性的get/set方法(略)
}

定義操作mongodb的接口

@Repository
   public interface LogRepository extends MongoRepository<MyLog, String>{
}

定義一個(gè)MongoDBAppender繼承UnsynchronizedAppenderBase

@Component
Public class MongoDBAppender extends UnsynchronizedAppenderBase<LoggingEvent> implements ApplicationContextAware{
private static LogRepository logRepository;
protected void append(LoggingEvent e){
       MyLog myLog = new MyLog();
       myLog.setLevel(e.getLevel().toString());
       myLog.setMsg(e.getFormattedMessage());
       myLog.setThread(e.getThreadName());
       myLog.setTs(new Date(e.getTimeStamp()));
       logRepository.save(myLog);
}
 
Public void setApplicationContext(ApplicationContext applicationContext) {
        if (applicationContext.getAutowireCapableBeanFactory()
                .getBean(LogRepository.class) != null) {
            logRepository = (LogRepository) applicationContext
                 .getAutowireCapableBeanFactory()
                 .getBean(LogRepository.class);
        }
}
}

以上是java代碼部分

下面就是自定義日志文件logback.xml的配置了

<?xml version="1.0" encoding="UTF-8"?>
<configuration >
   <contextName>logback</contextName>
   <!—設(shè)置變量:輸出格式 -->
   <property name="log.format" value="%d [%thread] %-5level %logger{68} %line - logId[[%X{client}][%X{request_id}]] - %msg%n"/>
   <!-- 輸出到控制臺(tái) -->
   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <charset>UTF-8</charset>
            <pattern>${log.format}</pattern>
        </encoder>
    </appender>
  <!--輸出到mongodb中-->  
    <appender name="MONGODB" class="cn.mis.mongo.appender.MongoDBAppender">
  </appender>  
    
 <root level="INFO">
         <appender-ref ref="STDOUT" />
         <appender-ref ref="MONGODB" />
     </root>
<logger name="com.mis.mongo.controller.DemoController"
level="WARN" additivity="false">
        <appender-ref ref=" MONGODB "/>
         </logger>  
</configuration>

下面簡(jiǎn)要的介紹一下自定義日志配置文件中的內(nèi)容

首先介紹一下日志選型的原因

Spring Boot在所有內(nèi)部日志中使用Commons Logging,但是默認(rèn)配置也提供了對(duì)常用日志的支持,如:Java Util Logging,Log4J, Log4J2Logback。每種Logger都可以通過(guò)配置使用控制臺(tái)或者文件輸出日志內(nèi)容。

Logback是log4j框架的作者開(kāi)發(fā)的新一代日志框架,它效率更高、能夠適應(yīng)諸多的運(yùn)行環(huán)境,同時(shí)天然支持SLF4J。SpringBoot默認(rèn)使用Logback。

自定義日志配置

由于日志服務(wù)一般都在ApplicationContext創(chuàng)建前就初始化了,它并不是必須通過(guò)Spring的配置文件控制。因此通過(guò)系統(tǒng)屬性和傳統(tǒng)的Spring Boot外部配置文件依然可以很好的支持日志控制和管理。

根據(jù)不同的日志系統(tǒng),你可以按如下規(guī)則組織配置文件名,就能被正確加載:

Spring Boot官方推薦優(yōu)先使用帶有-spring的文件名作為你的日志配置(如使用logback-spring.xml,而不是logback.xml),命名為logback-spring.xml的日志配置文件,spring boot可以為它添加一些spring boot特有的配置項(xiàng)(下面會(huì)提到)。

根節(jié)點(diǎn)<configuration>包含的屬性

scan:當(dāng)此屬性設(shè)置為true時(shí),配置文件如果發(fā)生改變,將會(huì)被重新加載,默認(rèn)值為true。

scanPeriod:設(shè)置監(jiān)測(cè)配置文件是否有修改的時(shí)間間隔,如果沒(méi)有給出時(shí)間單位,默認(rèn)單位是毫秒。當(dāng)scan為true時(shí),此屬性生效。默認(rèn)的時(shí)間間隔為1分鐘。

debug:當(dāng)此屬性設(shè)置為true時(shí),將打印出logback內(nèi)部日志信息,實(shí)時(shí)查看logback運(yùn)行狀態(tài)。默認(rèn)值為false。

根節(jié)點(diǎn)<configuration>的子節(jié)點(diǎn):

<configuration>下面一共有2個(gè)屬性,3個(gè)子節(jié)點(diǎn),分別是:

屬性一:設(shè)置上下文名稱<contextName>

每個(gè)logger都關(guān)聯(lián)到logger上下文,默認(rèn)上下文名稱為“default”。但可以使用設(shè)置成其他名字,用于區(qū)分不同應(yīng)用程序的記錄。一旦設(shè)置,不能修改,可以通過(guò)%contextName來(lái)打印日志上下文名稱。

屬性二:設(shè)置變量<property>

用來(lái)定義變量值的標(biāo)簽,有兩個(gè)屬性,name和value;其中name的值是變量的名稱,value的值時(shí)變量定義的值。通過(guò)定義的值會(huì)被插入到logger上下文中。定義變量后,可以使“${}”來(lái)使用變量

子節(jié)點(diǎn)一<appender>

appender用來(lái)格式化日志輸出節(jié)點(diǎn),有倆個(gè)屬性name和class,class用來(lái)指定哪種輸出策略,常用就是控制臺(tái)輸出策略和文件輸出策略。

控制臺(tái)輸出ConsoleAppender

<encoder>表示對(duì)日志進(jìn)行編碼:

  • %d{HH: mm:ss.SSS}——日志輸出時(shí)間
  • %thread——輸出日志的進(jìn)程名字,這在Web應(yīng)用以及異步任務(wù)處理中很有用
  • %-5level——日志級(jí)別,并且使用5個(gè)字符靠左對(duì)齊
  • %logger{36}——日志輸出者的名字
  • %msg——日志消息
  • %n——平臺(tái)的換行符

子節(jié)點(diǎn)二<root>

root節(jié)點(diǎn)是必選節(jié)點(diǎn),用來(lái)指定最基礎(chǔ)的日志輸出級(jí)別,只有一個(gè)level屬性。

level:用來(lái)設(shè)置打印級(jí)別,大小寫(xiě)無(wú)關(guān):TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,不能設(shè)置為INHERITED或者同義詞NULL。

默認(rèn)是DEBUG。

可以包含零個(gè)或多個(gè)元素,標(biāo)識(shí)這個(gè)appender將會(huì)添加到這個(gè)loger。

子節(jié)點(diǎn)三<logger>

<logger>用來(lái)設(shè)置某一個(gè)包或者具體的某一個(gè)類的日志打印級(jí)別、以及指定<appender>。<logger>僅有一個(gè)name屬性,一個(gè)可選的level和一個(gè)可選的addtivity屬性。

name:用來(lái)指定受此loger約束的某一個(gè)包或者具體的某一個(gè)類。

level:用來(lái)設(shè)置打印級(jí)別,大小寫(xiě)無(wú)關(guān):TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,還有一個(gè)特俗值INHERITED或者同義詞NULL,代表強(qiáng)制執(zhí)行上級(jí)的級(jí)別。如果未設(shè)置此屬性,那么當(dāng)前l(fā)oger將會(huì)繼承上級(jí)的級(jí)別。

addtivity:是否向上級(jí)loger傳遞打印信息。默認(rèn)是true。

logger在實(shí)際使用的時(shí)候有兩種情況

第一種:帶有l(wèi)oger的配置,不指定級(jí)別,不指定appender

第二種:帶有多個(gè)loger的配置,指定級(jí)別,指定appender

先來(lái)看一看代碼中如何使用

我們可以通過(guò)logger對(duì)象輸出不同級(jí)別的日志信息

以下兩種方式均可實(shí)現(xiàn)對(duì)具體方法進(jìn)行不同級(jí)別的日志管理

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺談Java鎖的膨脹過(guò)程以及一致性哈希對(duì)鎖膨脹的影響

    淺談Java鎖的膨脹過(guò)程以及一致性哈希對(duì)鎖膨脹的影響

    本文主要介紹了Java鎖的膨脹過(guò)程以及一致性哈希對(duì)鎖膨脹的影響,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • SpringBoot單元測(cè)試沒(méi)有執(zhí)行的按鈕問(wèn)題及解決

    SpringBoot單元測(cè)試沒(méi)有執(zhí)行的按鈕問(wèn)題及解決

    這篇文章主要介紹了SpringBoot單元測(cè)試沒(méi)有執(zhí)行的按鈕問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • IntelliJ IDEA安裝scala插件并創(chuàng)建scala工程的步驟詳細(xì)教程

    IntelliJ IDEA安裝scala插件并創(chuàng)建scala工程的步驟詳細(xì)教程

    這篇文章主要介紹了IntelliJ IDEA安裝scala插件并創(chuàng)建scala工程的步驟,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • java時(shí)間段查詢將00:00:00更換成23:59:59

    java時(shí)間段查詢將00:00:00更換成23:59:59

    本文主要介紹了java時(shí)間段查詢將00:00:00更換成23:59:59,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • 基于Java實(shí)現(xiàn)音頻播放功能

    基于Java實(shí)現(xiàn)音頻播放功能

    音頻播放是現(xiàn)代應(yīng)用程序中常見(jiàn)的一項(xiàng)功能,無(wú)論是在桌面應(yīng)用、游戲開(kāi)發(fā)、媒體播放器、還是在廣告和提示音效中,下面我們就來(lái)看看如何使用Java實(shí)現(xiàn)簡(jiǎn)單的音頻播放功能吧
    2025-03-03
  • Spring?Boot快速過(guò)濾出一次請(qǐng)求的所有日志

    Spring?Boot快速過(guò)濾出一次請(qǐng)求的所有日志

    這篇文章主要介紹了Spring?Boot快速過(guò)濾出一次請(qǐng)求的所有日志,本文講述了如何使用MDC工具來(lái)快速過(guò)濾一次請(qǐng)求的所有日志,并通過(guò)裝飾器模式使得MDC工具在異步線程里也能生效,需要的朋友可以參考下
    2022-11-11
  • Java實(shí)現(xiàn)將導(dǎo)出帶格式的Excel數(shù)據(jù)到Word表格

    Java實(shí)現(xiàn)將導(dǎo)出帶格式的Excel數(shù)據(jù)到Word表格

    在Word中制作報(bào)表時(shí),我們經(jīng)常需要將Excel中的數(shù)據(jù)復(fù)制粘貼到Word中,這樣則可以直接在Word文檔中查看數(shù)據(jù)而無(wú)需打開(kāi)另一個(gè)Excel文件。本文將通過(guò)Java應(yīng)用程序詳細(xì)介紹如何把帶格式的Excel數(shù)據(jù)導(dǎo)入Word表格。希望這篇文章能對(duì)大家有所幫助
    2022-11-11
  • Spring依賴注入的幾種方式分享梳理總結(jié)

    Spring依賴注入的幾種方式分享梳理總結(jié)

    這篇文章主要介紹了Spring依賴注入的幾種方式分享梳理總結(jié),文章圍繞主題展開(kāi)詳細(xì),具有一定參考價(jià)值,需要的朋友可以參考一下
    2022-07-07
  • Java使用iText生成PDF的步驟和示例

    Java使用iText生成PDF的步驟和示例

    iText 是一個(gè)用于創(chuàng)建和處理 PDF 文檔的開(kāi)源 Java 庫(kù),iText 主要用于生成 PDF 文件,可以將文本、圖像、表格、列表等內(nèi)容添加到 PDF 中,同時(shí)支持對(duì) PDF 進(jìn)行編輯、合并、分割、加密、數(shù)字簽名等操作,本文介紹了Java使用iText生成PDF的步驟和示例
    2024-10-10
  • 在Maven下代理服務(wù)器設(shè)定的方式

    在Maven下代理服務(wù)器設(shè)定的方式

    今天小編就為大家分享一篇關(guān)于在Maven下代理服務(wù)器設(shè)定的方式,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12

最新評(píng)論

临清市| 景德镇市| 喜德县| 盐边县| 夏河县| 阿巴嘎旗| 谷城县| 株洲县| 株洲市| 广德县| 沅江市| 溧水县| 珲春市| 东辽县| 嘉义县| 镇巴县| 宜宾市| 望奎县| 石景山区| 科技| 江安县| 通辽市| 襄汾县| 青神县| 阿荣旗| 禹城市| 定南县| 白河县| 安丘市| 和田县| 安溪县| 富川| 新兴县| 门头沟区| 鄱阳县| 长宁县| 额敏县| 平顺县| 沙洋县| 安顺市| 和龙市|