小張;開發一個大型系統: 1、System.out.println('');將關鍵數據打印在控制臺;去掉?寫在一個文件? 2、框架來記錄系統的一些運行時信息;日志框架 ;zhanglogging.jar; 3、高大上的幾個功能?異步模式?自動歸檔?xxxx?zhanglogging-good.jar? 4、將以前框架卸下來?換上新的框架,重新修改之前相關的API;zhanglogging-prefect.jar; 寫了一個統一的接口層;日志門面(日志的一個抽象層);logging-abstract.jar; 給項目中導入具體的日志實現就行了;我們之前的日志框架都是實現的抽象層; 市面上的日志框架: JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j.... Spring boot:底層是Spring框架,Spring框架默認是用JCL; 2. SLF4J 使用以后開發的時候,日志記錄方法的調用,不應該來直接調用日志的實現類,而是調用日志抽象層里面的方法;給系統里面導入slf4j的jar和logback的實現jar。
圖示: 每一個日志的實現框架都有自己的配置文件,使用slf4j以后,配置文件還是做成日志實現框架自己本身的配置文件; a(slf4j+logback): Spring(commons-logging)、Hibernate(jboss-logging)、MyBatis、xxxx 統一日志記錄,即使是別的框架和我一起統一使用slf4j進行輸出? 3. SpringBoot 日志關系<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring‐boot‐starter</artifactId> </dependency> SpringBoot使用它來做日志功能:
底層依賴關系: 1、SpringBoot底層也是使用slf4j+logback的方式進行日志記錄。 2、SpringBoot也把其他的日志都替換成了slf4j; @SuppressWarnings('rawtypes')publicabstractclassLogFactory{ staticString UNSUPPORTED_OPERATION_IN_JCL_OVER_SLF4J ='http://www./codes.html#unsupported_operation_in_jcl_over_slf4j'; staticLogFactory logFactory = new SLF4JLogFactory(); 4) 、如果我們要引用其他框架?一定要把這個框架的默認日志依賴移除掉? Spring框架用的是commons-logging;
SpringBoot能自動適配所有的日志,而且底層使用slf4j+logback的方式記錄日志,引入其他框架的時候,只需要把這個框架依賴的日志框架排除掉即可; 4. 日志的使用1.默認配置 SpringBoot默認幫我們配置好了日志; //記錄器 Logger logger = LoggerFactory.getLogger(getClass()); @Test publicvoid contextLoads() { //System.out.println(); //日志的級別; //由低到高 trace<debug<info<warn<error //可以調整輸出的日志級別;日志就只會在這個級別以以后的高級別生效 logger.trace('這是trace日志...'); logger.debug('這是debug日志...'); //SpringBoot默認給我們使用的是info級別的,沒有指定級別的就用SpringBoot默認規定的級別;root級別logger.info('這是info日志...'); logger.warn('這是warn日志...'); logger.error('這是error日志...'); }
2. 指定配置 給類路徑下放上每個日志框架自己的配置文件即可;SpringBoot就不使用他默認配置的了。 logback-spring.xml:日志框架就不直接加載日志的配置項,由SpringBoot解析日志配置,可以使用SpringBoot的高級Profile功能。 <springProfilename='staging'><!‐‐ configuration to be enabled when the 'staging' profile is active ‐‐>可以指定某段配置只在某個環境下生效 </springProfile>
如果使用logback.xml作為日志配置文件,還要使用profile功能,會有以下錯誤 no applicable action for[springProfile] 5. 切換日志框架
切換為log4j2 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring‐boot‐starter‐web</artifactId> <exclusions> <exclusion> <artifactId>spring‐boot‐starter‐logging</artifactId> <groupId>org.springframework.boot</groupId> </exclusion> </exclusions></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring‐boot‐starter‐log4j2</artifactId></dependency> 長按關注,學習更多 |
|
來自: 520jefferson > 《java/android》