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

你真的懂java的日志系統(tǒng)嗎

 更新時(shí)間:2022年02月14日 09:40:17   作者:北漂程序員  
日志管理的第一件事,就是日志的收集,日志收集是開發(fā)者必備的技巧,不管是哪個(gè)開發(fā)語言,哪個(gè)開發(fā)平臺(tái),日志收集的插件都是有很多選擇的,下面這篇文章主要給大家介紹了關(guān)于java日志系統(tǒng)的相關(guān)資料,需要的朋友可以參考下

一、背景

在java的開發(fā)中,使用最多也繞不過去的一個(gè)話題就是日志,在程序中除了業(yè)務(wù)代碼外,使用最多的就是打印日志。經(jīng)常聽到的這樣一句話就是“打個(gè)日志調(diào)試下”,沒錯(cuò)在日常的開發(fā)、調(diào)試過程中打印日志是常干的一件事,同時(shí)系統(tǒng)正常運(yùn)行過程中必要的日志打印也是必須的。

二、詳情

在筆者剛接觸java程序的時(shí)候,打印日志經(jīng)常使用到到下面的代碼,

System.out.println("hello log");

我相信在不了解日志系統(tǒng)的前提下使用上述的方式是最多的,同時(shí)也是新手小白最常用的方式,筆者曾經(jīng)也是使用最多的。那么除了上述的方式還有其他的方式嗎?答案是肯定的

2.1、java自帶的日志

在java的API中提供了一套日志打印的方法,java程序人員在設(shè)計(jì)之初已經(jīng)想到了這方面的功能,所以從JDK1.4起提供了日志打印的API,只不過被大多數(shù)人忽略了。這套API在java.util.logging包下,使用該種方式不需要引任何的jar,只要在java環(huán)境下即可使用。

如上圖,是java提供的日志的一些類。使用方法類似下面的代碼,

public static Logger logger=Logger.getLogger(Test.class.toString());
logger.info("hello log");

注意Logger的路徑是java.util.logging.Logger。

2.2、log4j

log4j是apache的一個(gè)項(xiàng)目,其中又分為log4j1和log4j2,所謂log4j1指的就是其大版本號(hào)為1,不過log41在很早之前就已經(jīng)停止更新了,源碼官網(wǎng):https://github.com/apache/logging-log4j1

可以看的在2012年已經(jīng)停止更新了,也就是說現(xiàn)在通常來說使用的log4j都是log4j2,更確切的說是log4j,為了準(zhǔn)確期間,這里還是和之前的版本進(jìn)行區(qū)分,使用log4j2的名字,log4j2是在log4j1基礎(chǔ)上的升級(jí),并吸收了logback這個(gè)框架的優(yōu)秀之處且修復(fù)了其很多問題,可以說log4j2是一個(gè)優(yōu)秀的日志框架,其源碼官網(wǎng):https://github.com/apache/logging-log4j2

官網(wǎng):https://logging.apache.org/log4j/2.x/index.html

log4j2的maven依賴如下,引入log4j-api和log4j-core即可,

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.17.1</version>
  </dependency>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.17.1</version>
  </dependency>

這里有個(gè)問題要注意,log4j1和log4j2的groupId是不一樣的,log4j1的是org.apache.log4j,log4j2的是org.apache.logging.log4j,帶來的變化就是在使用的過程中要注意引用的類的路徑,從路徑上可以確定是使用的log4j1.x還是log4j2.x,如果是org.apache.log4j開頭的包路徑那么是版本1的,是org.apache.logging.log4j開頭的是版本2的。

使用方式類似如下,

private static final Logger logger= LogManager.getLogger();
logger.info();

2.3、logback

logback是一個(gè)開源的日志框架,是log4j的作者為了代替log4j而開發(fā)的。logback包含三部分,logback-core、logback-classic、logback-access,logback-core是其他兩個(gè)模塊的核心,常用到的是logback-core+logback-classic。logback-access常和jetty和tomcat結(jié)合。

logback的groupId為ch.qos.logback,其maven依賴如下

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.2.10</version>
  </dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.10</version>
  </dependency>
<!--平時(shí)用不到,可不引入-->
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-access</artifactId>
    <version>1.2.10</version>
  </dependency>

使用方法可參考:https://www.jianshu.com/p/3e3b550920b3

其官網(wǎng):https://logback.qos.ch/index.html

2.4、slf4j

slf4j不能稱之為一個(gè)日志框架,因?yàn)樗鼉H僅提供了一系列的標(biāo)準(zhǔn),提供一系列接口,但沒有實(shí)現(xiàn),采用的是門面模式。

其依賴為:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.36</version>
  </dependency>

上面便是slf4j的核心包。

注意:如果使用slf4j出現(xiàn)下面的日志

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

說明沒有日志實(shí)現(xiàn)框架,slf4j自己實(shí)現(xiàn)了一個(gè)日志框架,可以加上下面的依賴

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.7.36</version>
  </dependency>

slf4j可以和其他具體的日志實(shí)現(xiàn)框架進(jìn)行結(jié)合使用,如下

上圖是一個(gè)slf4j和其他日志框架結(jié)合的圖形展示,

slf4j+logback

需要slf4j-api、logback-api、logback-classic三個(gè)包

slf4j+JDK日志

需要slf4j-api、slf4j-jdk14,其中slf4j-jdk14是slf4j和JDK日志結(jié)合的jar。

slf4j+log4j

需要slf4j+slf4j-log4j12

slf4j+JCL

需要slf4j、common-logging

其官網(wǎng):https://www.slf4j.org/

2.5、JCL

JCL是Jakarta Commons Logging的簡寫,又叫Apache Commons Logging,提供的是一個(gè) Java 的日志接口,同時(shí)兼顧輕量級(jí)和不依賴于具體的日志實(shí)現(xiàn)工具。它提供給中間件/日志工具開發(fā)者一個(gè)簡單的日志操作抽象,允許程序開發(fā)人員使用不同的具體日志實(shí)現(xiàn)工具。用戶被假定已熟悉某種日志實(shí)現(xiàn)工具的更高級(jí)別的細(xì)節(jié)。JCL提供的接口,對(duì)其它一些日志工具,包括Log4J, Avalon LogKit, and JDK 1.4等,進(jìn)行了簡單的包裝,此接口更接近于Log4J和LogKit的實(shí)現(xiàn)。

其包為common-logging.jar包含了所有的功能,還有其他另外兩個(gè)包c(diǎn)ommon-logging-api、common-logging-adapters

官網(wǎng):https://commons.apache.org/proper/commons-logging/guide.html

三、總結(jié)

本文簡單總結(jié)了java中常用的日志,其中slf4j和JCL是日志的接口,又都進(jìn)行了簡單實(shí)現(xiàn),既可以自己單獨(dú)使用,又可以和其他實(shí)現(xiàn)日志框架結(jié)合使用,如,log4j、logback、JDK logging等。

到此這篇關(guān)于java日志系統(tǒng)的文章就介紹到這了,更多相關(guān)java日志系統(tǒng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java之InputStreamReader類的實(shí)現(xiàn)

    Java之InputStreamReader類的實(shí)現(xiàn)

    這篇文章主要介紹了Java之InputStreamReader類的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • SpringBoot使用Jackson配置全局時(shí)間日期格式

    SpringBoot使用Jackson配置全局時(shí)間日期格式

    本文主要介紹了SpringBoot使用Jackson配置全局時(shí)間日期格式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Java實(shí)現(xiàn)單例模式之餓漢式、懶漢式、枚舉式

    Java實(shí)現(xiàn)單例模式之餓漢式、懶漢式、枚舉式

    本篇文章主要介紹了Java實(shí)現(xiàn)單例的3種普遍的模式,餓漢式、懶漢式、枚舉式。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2016-10-10
  • 在2023idea中實(shí)現(xiàn)SpringBoot的IoC和AOP的方法

    在2023idea中實(shí)現(xiàn)SpringBoot的IoC和AOP的方法

    這篇文檔詳細(xì)介紹了如何在Spring Boot中實(shí)現(xiàn)IoC(控制反轉(zhuǎn))和AOP(面向切面編程),深入探討了AOP的基本概念,包括AOP的作用、優(yōu)勢以及實(shí)現(xiàn)方式,最后,它提到了AOP的注解,如@Aspect、@Pointcut、@Before、@After、@AfterReturning、@AfterThrowing和@Around
    2024-11-11
  • 詳解MyBatis延遲加載是如何實(shí)現(xiàn)的

    詳解MyBatis延遲加載是如何實(shí)現(xiàn)的

    MyBatis 的延遲加載(懶加載)特性允許在需要使用關(guān)聯(lián)對(duì)象數(shù)據(jù)時(shí)才進(jìn)行加載,而不是在執(zhí)行主查詢時(shí)就加載所有相關(guān)數(shù)據(jù),我們將通過以下幾個(gè)方面來深入了解MyBatis的延遲加載實(shí)現(xiàn)機(jī)制,需要的朋友可以參考下
    2024-07-07
  • Java實(shí)現(xiàn)AES/CBC/PKCS7Padding加解密的方法

    Java實(shí)現(xiàn)AES/CBC/PKCS7Padding加解密的方法

    這篇文章主要介紹了Java實(shí)現(xiàn)AES/CBC/PKCS7Padding加解密的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • MyBatis實(shí)現(xiàn)遞歸查詢的方法詳解

    MyBatis實(shí)現(xiàn)遞歸查詢的方法詳解

    在項(xiàng)目開發(fā)過程中,往往會(huì)遇到多級(jí)菜單、分類等多層級(jí)結(jié)構(gòu)數(shù)據(jù)的查詢。本文就來為大家講講MyBatis實(shí)現(xiàn)遞歸查詢的方法,感興趣的可以動(dòng)手嘗試一下
    2022-08-08
  • Mybatis在sqlite中無法讀寫byte[]類問題的解決辦法

    Mybatis在sqlite中無法讀寫byte[]類問題的解決辦法

    這篇文章主要給大家介紹了關(guān)于Mybatis在sqlite中無法讀寫byte[]類問題的解決辦法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • 詳解JAVA 強(qiáng)引用

    詳解JAVA 強(qiáng)引用

    這篇文章主要介紹了JAVA 強(qiáng)引用的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • 淺談Java幾種文件讀取方式耗時(shí)

    淺談Java幾種文件讀取方式耗時(shí)

    本文主要介紹了淺談Java幾種文件讀取方式耗時(shí),主要介紹了4種,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04

最新評(píng)論

酉阳| 西贡区| 乌拉特中旗| 巴里| 昭通市| 互助| 黔西县| 聂拉木县| 双鸭山市| 如东县| 平乡县| 额尔古纳市| 三穗县| 临湘市| 左贡县| 翼城县| 东港市| 新乡市| 涿鹿县| 安龙县| 河津市| 兰州市| 普宁市| 丹阳市| 宁南县| 巴彦县| 东莞市| 南靖县| 昆明市| 赣榆县| 淅川县| 景泰县| 林口县| 泰安市| 宁明县| 望都县| 磐安县| 宝丰县| 武鸣县| 普定县| 同心县|