久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    丟人不!還用System.out.println('''');太 Low了!

     520jefferson 2020-11-10

    作者:雨爾辰辰

    1、日志框架

    小張;開發一個大型系統:

    1、System.out.println('');將關鍵數據打印在控制臺;去掉?寫在一個文件?

    2、框架來記錄系統的一些運行時信息;日志框架 ;zhanglogging.jar;

    3、高大上的幾個功能?異步模式?自動歸檔?xxxx?zhanglogging-good.jar?

    4、將以前框架卸下來?換上新的框架,重新修改之前相關的API;zhanglogging-prefect.jar;

    5、JDBC---數據庫驅動;

    寫了一個統一的接口層;日志門面(日志的一個抽象層);logging-abstract.jar;

    給項目中導入具體的日志實現就行了;我們之前的日志框架都是實現的抽象層;

    市面上的日志框架:

    JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j....

    左邊選一個門面(抽象層)、右邊來選一個實現;

    日志門面:SLF4J;

    日子實現:Logback;

    Spring boot:底層是Spring框架,Spring框架默認是用JCL;

    Spring boot選用SLF4J和logback;

    2. SLF4J 使用

    1、如何在系統中使用SLF4j

    https://www.

    以后開發的時候,日志記錄方法的調用,不應該來直接調用日志的實現類,而是調用日志抽象層里面的方法;給系統里面導入slf4j的jar和logback的實現jar。

    1. import org.slf4j.Logger;

    2. import org.slf4j.LoggerFactory;

    3. publicclassHelloWorld{

    4.  publicstaticvoid main(String[] args) {

    5.    Logger logger = LoggerFactory.getLogger(HelloWorld.class);

    6.    logger.info('Hello World');

    7.  }

    8. }

    圖示:

    每一個日志的實現框架都有自己的配置文件,使用slf4j以后,配置文件還是做成日志實現框架自己本身的配置文件;

    2. 遺留問題

    a(slf4j+logback): Spring(commons-logging)、Hibernate(jboss-logging)、MyBatis、xxxx

    統一日志記錄,即使是別的框架和我一起統一使用slf4j進行輸出?

    如何讓系統中所有的日志都統一到slf4j:

    1.將系統中其他日志框架先排除出去;

    2.用中間包來替換原有的日志框架;

    3.我們導入slf4j其他的實現;

    3. SpringBoot 日志關系

    <dependency>        <groupId>org.springframework.boot</groupId>            <artifactId>spring‐boot‐starter</artifactId>            </dependency>

    SpringBoot使用它來做日志功能:

    1. <dependency>    

    2. <groupId>org.springframework.boot</groupId>            

    3. <artifactId>spring‐boot‐starter‐logging</artifactId>            

    4. </dependency>

    底層依賴關系:

    總結:

    1、SpringBoot底層也是使用slf4j+logback的方式進行日志記錄。

    2、SpringBoot也把其他的日志都替換成了slf4j;

    3、中間替換包?

    @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;

    1. <dependency>        

    2. <groupId>org.springframework</groupId>            

    3. <artifactId>spring‐core</artifactId>            

    4. <exclusions>            

    5. <exclusion>                

    6. <groupId>commons‐logging</groupId>                    

    7. <artifactId>commons‐logging</artifactId>                    

    8. </exclusion>                

    9. </exclusions>            

    10. </dependency>

    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日志...');        }

    日志輸出格式:

    %d表示日期時間,
    %thread表示線程名,
    %‐5level:級別從左顯示5個字符寬度
    %logger{50} 表示logger名字最長50個字符,否則按照句點分割。
    %msg:日志消息,
    %n是換行符
    ‐‐>%d{yyyy‐MM‐dd HH:mm:ss.SSS} [%thread] %‐5level %logger{50} ‐ %msg%n

    Spring Boot修改日志的默認配置

    1. logging.level.com.atguigu=trace

    2. #logging.path=

    3. # 不指定路徑在當前項目下生成springboot.log日志

    4. # 可以指定完整的路徑;

    5. #logging.file=G:/springboot.log

    6. # 在當前磁盤的根路徑下創建spring文件夾和里面的log文件夾;使用 spring.log 作為默認文件

    7. logging.path=/spring/log

    8. #  在控制臺輸出的日志的格式

    9. logging.pattern.console=%d{yyyy‐MM‐dd} [%thread] %‐5level%logger{50} ‐ %msg%n

    10. # 指定文件中日志輸出的格式

    11. logging.pattern.file=%d{yyyy‐MM‐dd} === [%thread] === %‐5level=== %logger{50} ==== %msg%n

    2. 指定配置

    給類路徑下放上每個日志框架自己的配置文件即可;SpringBoot就不使用他默認配置的了。

    logback.xml:直接就被日志框架識別了;

    logback-spring.xml:日志框架就不直接加載日志的配置項,由SpringBoot解析日志配置,可以使用SpringBoot的高級Profile功能。

    <springProfilename='staging'><!‐‐ configuration to be enabled when the 'staging' profile is active ‐‐>可以指定某段配置只在某個環境下生效  </springProfile>
    1. <appendername='stdout'class='ch.qos.logback.core.ConsoleAppender'>

    2. <!‐‐

    3. 日志輸出格式:

    4. %d表示日期時間,            

    5. %thread表示線程名,            

    6. %‐5level:級別從左顯示5個字符寬度            

    7. %logger{50} 表示logger名字最長50個字符,否則按照句點分割。           

    8. %msg:日志消息,            

    9. %n是換行符            

    10. ‐‐>

    11.    <layoutclass='ch.qos.logback.classic.PatternLayout'>

    12.         <springProfilename='dev'>

    13.                <pattern>%d{yyyy‐MM‐dd HH:mm:ss.SSS} ‐‐‐‐> [%thread] ‐‐‐> %‐5level

    14. %logger{50} ‐ %msg%n</pattern>

    15.            </springProfile>

    16.            <springProfilename='!dev'>

    17.                <pattern>%d{yyyy‐MM‐dd HH:mm:ss.SSS} ==== [%thread] ==== %‐5level

    18. %logger{50} ‐ %msg%n</pattern>

    19.            </springProfile>

    20.     </layout>

    21. </appender>

    如果使用logback.xml作為日志配置文件,還要使用profile功能,會有以下錯誤

    no applicable action for[springProfile]

    5. 切換日志框架

    可以按照slf4j的日志適配圖,進行相關的切換;

    slf4j+log4j的方式:

    1. dependency>

    2.  <groupId>org.springframework.boot</groupId>

    3.  <artifactId>spring‐boot‐starter‐web</artifactId>

    4.  <exclusions>

    5.    <exclusion>

    6.      <artifactId>logback‐classic</artifactId>

    7.      <groupId>ch.qos.logback</groupId>

    8.    </exclusion>

    9.    <exclusion>

    10.      <artifactId>log4j‐over‐slf4j</artifactId>

    11. <groupId>org.slf4j</groupId>

    12.    </exclusion>

    13.  </exclusions>

    14. </dependency>

    15. <dependency>

    16.  <groupId>org.slf4j</groupId>

    17.  <artifactId>slf4j‐log4j12</artifactId>

    18. </dependency>

    切換為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>
    長按關注,學習更多

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 老师扒下内裤让我爽了一夜| 最新国产精品亚洲| 东京热人妻无码一区二区av| 日本精品一区二区不卡| 亚洲WWW永久成人网站| 亚洲综合无码一区二区| 18禁无遮挡啪啪无码网站破解版| 一个人免费观看WWW在线视频| 精品国产免费一区二区三区香蕉| 噜噜久久噜噜久久鬼88| 男人扒开女人腿桶到爽免费| 亚欧美日韩香蕉在线播放视频| 熟妇人妻中文字幕| 性欧美VIDEOFREE高清大喷水| 亚洲AV成人中文无码专区| 老司机免费的精品视频| 草草影院精品一区二区三区| 国内熟妇人妻色在线视频| 在线观看国产成人无码| 久久亚洲2019中文字幕| 影音先锋啪啪av资源网站| 老少配老妇老熟女中文普通话| 麻豆国产va免费精品高清在线| 国产亚洲999精品AA片在线爽| 日本精品一区二区不卡| 午夜无码区在线观看亚洲 | 日韩免费无码一区二区视频| 激情五月开心综合亚洲| 国产精品国产自线拍免费软件| 免费看女人与善牲交| 免费无码成人AV片在线| 少妇扒开毛茸茸的B自慰 | 午夜免费国产体验区免费的| 国产午夜亚洲精品国产成人| 国产精品无码专区| 欧美日韩精品一区二区三区不卡| 加勒比无码人妻东京热| 日本在线看片免费人成视频| 美女乱子伦高潮在线观看完整片| 色狠狠色噜噜AV一区| 国产一区二区不卡自拍|