JAVA 日志框架簡單了解

JAVA 開發(fā)中冒签,一個離不開的東西就是日志,當在本地開發(fā)時笔诵,想要找到一些引起B(yǎng)UG 的問題點返吻,我們可以通過DEBUG的形式,但是一旦項目上線乎婿,我們可能就沒辦法直接追蹤問題测僵,這時就需要一些工具幫我們把項目運行中一些數(shù)據(jù)打印保存下來,方便問題分析定位谢翎。

沒有日志框架怎么辦

記得剛開始開發(fā)JAVA 時捍靠,我們一定都用過System.out.println()做過打印的事情,其實森逮,這樣也不是不可以榨婆,但是一個日志框架要做的,其實并不只是打印輸出數(shù)據(jù)褒侧,他可能還需要具有以下一些功能

  1. 可以持久化纲辽,無論是磁盤文件,還是數(shù)據(jù)庫等
  2. 如果是持久化到磁盤文件璃搜,可以自定義分割,比如超過10M自動分割鳞上,防止單個日志文件過大这吻。
  3. 可以控制輸出級別。比如有些日志我只要在測試環(huán)境的時候才打印篙议,而正式上線唾糯,則不打印怠硼。

還有一點,因為System.out.println() 底層是用到了synchronized 關(guān)鍵字移怯,可能會導致一些性能問題


image.png

常見的日志框架

JAVA 開發(fā)中香璃,大家也一定用到很多日志框架,常見的主要有以下這些舟误。

  • JDKLog
  • Log4J
  • LogBack
  • SLF4J

JDKLog

JDKLog 是JDK自帶的日志框架葡秒,不需要引入任何的第三方包就可以直接使用,使用方法如下

import java.util.logging.Logger;


   Logger logger = Logger.getLogger("JDKLog");
   logger.info("Hello World.");

運行后輸出


image.png

Log4J

Log4J 是Apache基金開源的日志框架嵌溢,他可以實現(xiàn)控制日志輸出目的地眯牧,控制輸出格式等等。
Log4J 實際上分了Log4J 和 Log4J2赖草,下面演示下Log4J的使用方法
先引入相關(guān)包

<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

然后項目中使用

import org.apache.log4j.Logger;

  Logger logger = Logger.getLogger(JLog.class);
        logger.info(" info ");
        logger.debug(" debug ");
        logger.error(" error ");

但是如果直接是在普通的maven 項目中使用学少,可能會出現(xiàn)如下錯誤:

log4j:WARN No appenders could be found for logger (log.JLog).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

因為log4j 需要配置一些東西才可以,我們可以在項目的resources目錄下建立 log4j.properties文件秧骑,然后
寫入如下配置

log4j.rootLogger=ALL, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

這樣版确,就可以順利打印了,結(jié)果如下


image.png

LogBack

LogBack 是在log4j 之后的一個日志框架乎折,實際上是同一個人開發(fā)的绒疗,主要是重寫了內(nèi)核,比log4j在性能上更加的好笆檀,以下介紹摘自百度百科:

Logback是由log4j創(chuàng)始人設(shè)計的又一個開源日志組件忌堂。logback當前分成三個模塊:logback-core,logback- classic和logback-access。logback-core是其它兩個模塊的基礎(chǔ)模塊酗洒。logback-classic是log4j的一個 改良版本士修。此外logback-classic完整實現(xiàn)SLF4J API使你可以很方便地更換成其它日志系統(tǒng)如log4j或JDK14 Logging。logback-access訪問模塊與Servlet容器集成提供通過Http來訪問日志的功能

使用方法如下:
先引入依賴

   <!--這個依賴直接包含了 logback-core 以及 slf4j-api的依賴-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

     Logger log = LoggerFactory.getLogger(JLog.class);
     log.info("info");
     log.debug("debug");
     log.error(" error ");

SLF4J

SLF4J樱衷,即簡單日志門面(Simple Logging Facade for Java)棋嘲,不是具體的日志解決方案,它只服務(wù)于各種各樣的日志系統(tǒng),他主要解決的問題場景如下矩桂,假如系統(tǒng)今天采用了A日志框架沸移,過了2天由于特殊原因,需要切換到B日志框架侄榴,那如果沒有這個門面雹锣,則需要更改所有的日志代碼,而有了這個門面癞蚕,項目中直接使用門面來輸入日志蕊爵,則切換時沒有影響,不需要改變?nèi)魏未a桦山,只需要引入新的依賴攒射,做一個配置即可醋旦。

常用的日志級別

  • OFF 關(guān)閉:最高級別,不輸出日志会放。
  • FATAL 致命:輸出非常嚴重的可能會導致應用程序終止的錯誤饲齐。
  • ERROR 錯誤:輸出錯誤,但應用還能繼續(xù)運行咧最。
  • WARN 警告:輸出可能潛在的危險狀況捂人。
  • INFO 信息:輸出應用運行過程的詳細信息。
  • DEBUG 調(diào)試:輸出更細致的對調(diào)試應用有用的信息窗市。
  • TRACE 跟蹤:輸出更細致的程序運行軌跡先慷。
  • ALL 所有:輸出所有級別信息
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市咨察,隨后出現(xiàn)的幾起案子论熙,更是在濱河造成了極大的恐慌,老刑警劉巖摄狱,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脓诡,死亡現(xiàn)場離奇詭異,居然都是意外死亡媒役,警方通過查閱死者的電腦和手機祝谚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來酣衷,“玉大人交惯,你說我怎么就攤上這事〈┮牵” “怎么了席爽?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長啊片。 經(jīng)常有香客問我只锻,道長,這世上最難降的妖魔是什么紫谷? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任齐饮,我火速辦了婚禮,結(jié)果婚禮上笤昨,老公的妹妹穿的比我還像新娘祖驱。我一直安慰自己,他們只是感情好瞒窒,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布羹膳。 她就那樣靜靜地躺著,像睡著了一般根竿。 火紅的嫁衣襯著肌膚如雪陵像。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天寇壳,我揣著相機與錄音醒颖,去河邊找鬼。 笑死壳炎,一個胖子當著我的面吹牛泞歉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播匿辩,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼腰耙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了铲球?” 一聲冷哼從身側(cè)響起挺庞,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎稼病,沒想到半個月后选侨,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡然走,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年援制,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片芍瑞。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡晨仑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拆檬,到底是詐尸還是另有隱情洪己,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布秩仆,位于F島的核電站码泛,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏澄耍。R本人自食惡果不足惜噪珊,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望齐莲。 院中可真熱鬧痢站,春花似錦、人聲如沸选酗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽芒填。三九已至呜叫,卻和暖如春空繁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背朱庆。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工盛泡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人娱颊。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓傲诵,卻偏偏與公主長得像,于是被迫代替她去往敵國和親箱硕。 傳聞我的和親對象是個殘疾皇子拴竹,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容