日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

007_logback配置

發布時間:2025/4/17 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 007_logback配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

1. Logback采取下面的步驟進行自我配置

1.1. 嘗試在classpath下查找文件logback-test.xml;

1.2. 嘗試在classpath下查找文件logback.groovy;

1.3. 嘗試在classpath下查找文件logback.xml;

1.4. 假設配置文件logback-test.xml、logback.groovy和logback.xml都不存在, 那么logback默認地會調用BasicConfigurator, 創建一個最小化配置。最小化配置由一個關聯到根logger的ConsoleAppender組成。輸出用模式為%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n的PatternLayoutEncoder進行格式化。還有, 根logger默認級別是DEBUG。最后一步是為了在缺少配置文件時提供默認(但基本的)記錄功能。

2. 默認配置例子

2.1. 新建一個名為DefaultCfg的Java項目, 同時添加相關jar包。

2.2. DefaultCfg.java

package com.fj.cfg;import org.slf4j.Logger; import org.slf4j.LoggerFactory;public class DefaultCfg {private static final Logger logger = LoggerFactory.getLogger(DefaultCfg.class);public static void main(String[] args) {logger.error("沒有logback-test.xml配置");logger.warn("沒有logback.groovy配置");logger.info("沒有logback.xml配置");logger.debug("logback默認地調用BasicConfigurator, 創建一個最小化配置。");logger.trace("這條日志使用默認配置的默認級別不會被打印。");} }

2.3. 運行項目

3. 用logback-test.xml或logback.xml自動配置?

3.1. 如果classpath里有logback-test.xml或logback.xml, logback會試圖用它進行自我配置。下面的配置文件與沒有配置文件時, 默認調用BasicConfigurator創建最小化配置是等效的。

<configuration><appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <encoder charset="UTF-8"> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root><appender-ref ref="stdout" /></root> </configuration>

4. 配置打印內部信息

4.1. 設置configuration元素的debug屬性為true, 會打印logback狀態數據。

4.2. 新建一個名稱為LogbackCfg的Java項目, 添加相關jar包

4.3. 新建一個名為config的source folder, 在config文件夾下創建logback-test.xml配置文件

4.4. 編輯logback-test.xml

<configuration debug="true"><appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <encoder charset="UTF-8"> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root><appender-ref ref="stdout" /></root> </configuration>

4.5. 編寫PrintStatusByCfg.java

package com.zr.cfg;import org.slf4j.Logger; import org.slf4j.LoggerFactory;public class PrintStatusByCfg {private final static Logger logger = LoggerFactory.getLogger(PrintStatusByCfg.class);public static void main(String[] args) {logger.info("configuration debug = true時, 會打印內部信息。");} }

4.6. 運行項目

5. 配置文件修改后自動重新加載

5.1. 如果設置成自動重新加載, logback-classic會掃描配置文件里的變化, 并且當發生變化后進行重新配置。設置訪方法是設configuration元素的scan屬性為true。

<configuration scan="true">... </configuration

5.2. 默認情況下, 每隔一分鐘掃描一次。 configuration元素的scanPeriod屬性控制掃描周期, 其值可以帶時間單位, 包括: milliseconds、seconds、minutes和hours。

<configuration scan="true" scanPeriod="30 seconds">... </configuration>

5.3. 如果沒寫明時間單位, 則默認為毫秒。

5.4. 內部實現是這樣的, 當設置掃描屬性為true時, 會安裝一個叫ReconfigureOnChangeFilter的TurboFilter。每次調用logger的打印方法時, 都會進行掃描。比如, 當名為myLogger的logger執行"myLogger.debug("hello");"時, 如果scan屬性為true, 則ReconfigureOnChangeFilter會被調用。而且, 即使myLogger的debug級別被禁用了, 仍然會調用上述過濾器。

5.5. 考慮到在任何logger在每次被調用時都要調用ReconfigureOnChangeFilter, 這個過濾器的性能就變得十分關鍵了。為提高性能, 不會在每個logger被調用時去檢查是否需要掃描, 而是每隔16次記錄操作進行一次檢查。簡言之, 當配置文件改變后, 它會被延時重新加載, 延時時間由掃描間隔時間和一些logger調用所決定。

6. 直接調用JoranConfigurator

6.1. Logback依賴Joran, Joran是logback-core的一部分, 是個配置類庫。Logback的默認配置機制是調用JoranConfigurator對classpath上的默認配置文件進行處理。不管出于什么理由, 如果你想重新實現logback的默認配置機制的話, 你可以直接調用JoranConfigurator。

6.2. 創建一個名為的Java項目, 同時添加相關jar包

6.3. 新建cfg文件夾, 在cfg下創建logback.xml

6.4. 編輯logback.xml

<configuration><appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <encoder charset="UTF-8"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root><appender-ref ref="stdout" /></root> </configuration>

6.5. 編輯CodeUseCfg.java

package com.zr.cfg;import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ch.qos.logback.classic.LoggerContext; import ch.qos.logback.classic.joran.JoranConfigurator; import ch.qos.logback.core.joran.spi.JoranException;public class CodeUseCfg {private static final Logger logger = LoggerFactory.getLogger(CodeUseCfg.class);public static void main(String[] args) {// 上下文LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();// Joran配置文件處理類JoranConfigurator cfg = new JoranConfigurator();cfg.setContext(lc);// 上下文已經讀取配置文件或使用默認配置文件, 這里進行重置操作。lc.reset();try {cfg.doConfigure("cfg/logback.xml");} catch (JoranException e) {e.printStackTrace();}logger.info("使用代碼設置配置文件");} }

6.6. 運行結果

7. html查看狀態消息

7.1. Logback把內部數據放在一個StatusManager對象里,并通過LoggerContext訪問。

7.2. StatusManager通過logback上下文來訪問所有數據對象。為把內存占用保持在合理的范圍內,默認的StatusManager實現將狀態消息按頭和尾兩部分存儲。頭部存儲開始的H條狀態消息,尾部存儲后面的T條消息。現在的H=T=150,將來或許會改變。

7.3. Logback-classic帶了一個叫ViewStatusMessagesServlet的Servlet,它以HTML表格的格式打印與當前LoggerContext關聯的StatusManager的內容。

7.4. 新建一個名為ViewStatusMessagesServlet的動態Web工程, 同時添加相關jar包

7.5. 在web.xml里配置servlet

7.6. 發送請求

總結

以上是生活随笔為你收集整理的007_logback配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。