首页 風水 居家風水 正文

選擇日誌級別(若何動態改變日誌級別)

掃碼手機瀏覽

熱門測算

荷花圖案的寓意和象徵風水(每朵蓮花都有自己的命運)

前言,關於日誌級別大部門項目可能都設置為info級別固然也可能有一些追求性能或者說包羅許多敏感信息的項目直接將級別設置為warn或者error這時刻若是項目中泛起一些未知異常需要用到很詳細的日誌信息此時若是項目中沒有動態改變日誌級其餘機制排盤問題將很棘手,日誌系統,我們常用的一些日誌系統包羅,Log4j2,Logback,JavaUtilLogging,Log4j2,LoggerContextloggerContextLoggerContextLogManagergetContextfalseLoggerConfigloggerConfigloggerContextgetConfigurationgetLoggersgetrootloggerConfigsetLevellevel,Logback,LoggerContextloggerContextLoggerContextLoggerFactorygetILoggerFactoryLoggerloggerloggerContextgetLoggerrootchqoslogbackclassicLoggerloggersetLevellevel,JavaUtilLogging,LoggerloggerLoggergetLoggerrootloggersetLevellevel,固然除了上面直接設置日誌級其餘方式也有可以動態加載設置文件的方式同樣也可以在設置文件中動態改變日誌級別以logback為例,LoggerContextlcLoggerContextLoggerFactorygetILoggerFactoryFileexternalConfigFilenewFilelogbackxmlJoranConfiguratorconfiguratornewJoranConfiguratorconfiguratorsetContextlclcresetconfiguratordoConfigureexternalConfigFileLocation,上面簡樸先容了一下每種日誌系統都是若何去設置日誌級其餘最要害的是設置完之後可以實時生效立馬可以看到我們想要的日誌有了這些下面實在就是通過何種方式去改變日誌級其餘問題了,若何動態改變級別,若何去動態改變級別最簡樸的方式就是對外提供一個接口給定一個日誌級別作為參數實時換取或者通過設置中央的方式另外實在像SpringBoot這些主流的框架自己也提供了動態修改的功效下面可以詳細看一下是若何實現的以logback為例,自界說接口,自界說一個給定日誌級其餘接口外部直接通過挪用接口來改變級別,RequestMappingvaluelogLevellogLevelpublicStringchangeLogLevelPathVariablelogLevelStringlogLeveltryLoggerContextloggerContextLoggerContextLoggerFactorygetILoggerFactoryLoggerloggerloggerContextgetLoggerrootchqoslogbackclassicLoggerloggersetLevelLevelvalueOflogLevelcatchExceptioneloggererrorchangeLogLevelerrorereturnfailreturnsuccess,想要改變日誌級別直接請求如下地址即可設置一個debug的級別這種方式雖然對照簡樸然則若是節點許多的話操作起來就很窮苦固然也可以匯總所有節點路徑一次操作觸發所有節點的請求實在最好的設施應該是類似宣布訂閱的方式宣布者會給所有訂閱者都發送一個更他日誌級其餘通知有新的節點只要成為訂閱者即可這種方式實在就是現在主流的設置中央的方式,設置中央,可以直接使用PathChildrenCache用來監聽子節點的CHILDADDEDCHILDUPDATEDCHILDREMOVED事宜這樣若是在Zookeeper服務端對節點的值就行更新客戶端會觸發以上三個事宜,privatevoidwatcherPathStringpathPathChildrenCachecachenewPathChildrenCacheclientpathtruecachestartStartModePOSTINITIALIZEDEVENTcachegetListenableaddListenernewPathChildrenCacheListenerOverridepublicvoidchildEventCuratorFrameworkclientPathChildrenCacheEventeventthrowsExceptionswitcheventgetTypecaseCHILDADDEDbreakcaseCHILDUPDATEDStringlogLevelnewStringeventgetDatagetData日誌級別更新處置breakcaseCHILDREMOVEDbreakdefaultbreak,日誌品級TopicprivatefinalStringTOPICLOGLEVELprivatevoidwatcherPathsthrowsJMSExceptionTopictopicsessioncreateTopicTOPICMessageConsumerconsumersessioncreateConsumertopicconsumersetMessageListenernewMessageListenerOverridepublicvoidonMessageMessagemessageTextMessagetmTextMessagemessageStringlogLeveltmgetText日誌級別更新處置,privatevoidwatcherPathsthrowsJMSExceptionjedissubscribenewJedisPubSubOverridepublicvoidonMessageStringchannelStringmessageStringlogLevelmessage日誌級別更新處置LOGLEVEL,SpringBoot內置,SpringBoot20之後可以通過actuator動態調整日誌級別主要是通過露出loggers這個endpoint來實現詳細步驟如下,orgspringframeworkboot,露出loggers,managementendpointswebexposureincludeloggers,levelsOFFERRORWARNINFODEBUGTRACEloggersROOTconfiguredLevelINFOeffectiveLevelINFO,詳細通過LoggingSystem來對日誌系統動態改變級別上面也先容了主流使用的日誌系統SpringBoot也都支持這些系統這是一個抽象類詳細實現類,JavaLoggingSystem,Log4J2LoggingSystem,NoOpLoggingSystem,劃分對應了幾種日誌系統這幾個類內部實在也是挪用上面先容的方式去改變日誌級別固然SpringBoot自動會識別出當前使用的是哪個日誌系統然後使用哪個LoggingSystem,若何動態改變日誌級別大部門公司實在更多的照樣使用設置中央的方式來動態改變日誌級別這種方式加倍天真而且設置中央已經成為許多公司的標配組件不光用來改變日誌級別所有有可能改變的參數都可以使用,謝謝關注,可以關注回滾吧代碼第一時間閱讀文章連續更新專註Java源碼架構算法和面試,

形容漢字的四字詞語(形容詞語的四字詞語)

閱讀全文

本文轉載自互聯網,如有侵權,聯系刪除