slf4j、logback和log4j總結
java開發過程中為了找問題方便或是統計資訊方便,總免不了要打各種日誌。之前的各個專案都是配置好的,maven配置的時候,會看到各種型別的Log包:slf4j、log4j、commons-log、logback等等,看著就煩,今天仔細瞭解了一下,有點收穫,記錄一下
起因
使用JAVA的kafka api寫main方法進行開發測試,發現總報錯
123 | log4j:WARN No appenders could be found for logger (kafka.utils.VerifiableProperties). 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的配置。好辦,classpath下加入log4j.properties(log4j預設應該是直接找classpath下的這個檔案,當然,可以直接指定載入哪個檔案),OK,不報錯了
剛好最近的一個專案使用的是logback,而且網上也查了,logback效能要優於log4j(沒有做過測試,先盲目從眾吧),就想直接引入logback。
POM中加入logback的依賴
123456789101112131415 | <dependency> <groupId>ch.qos.logback< /groupId > <artifactId>logback-core< /artifactId > <version>1.1.2< /version > < /dependency > <dependency> <groupId>ch.qos.logback< /groupId > <artifactId>logback-access< /artifactId > <version>1.1.2< /version > < /dependency > <dependency> <groupId>ch.qos.logback< /groupId > <artifactId>logback-classic< /artifactId > <version>1.1.2< /version > < /dependency > |
啟動,報錯
12345678 | log4j:WARN No appenders could be found for logger (kafka.utils.VerifiableProperties). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http: //logging .apache.org /log4j/1 .2 /faq .html #noconfig for more info. SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar: file : /C : /Users/zhaohuayu/ .m2 /repository/org/slf4j/slf4j-log4j12/1 .6.1 /slf4j-log4j12-1 .6.1.jar! /org/slf4j/impl/StaticLoggerBinder .class] SLF4J: Found binding in [jar: file : /C : /Users/zhaohuayu/ .m2 /repository/ch/qos/logback/logback-classic/1 .1.2 /logback-classic-1 .1.2.jar! /org/slf4j/impl/StaticLoggerBinder .class] SLF4J: See http: //www .slf4j.org /codes .html #multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] |
哦,Class path contains multiple SLF4J bindings。
原來slf4j提供的是一個抽象的介面,實現可以是log4j、logback等,但是,執行時候只能有一個介面實現類。之前引入的kafka包,已經包含了對log4j的依賴,我又引入logback的包,衝突了
好辦,去掉對Log4j的依賴
12345678910111213
相關推薦slf4j、logback和log4j總結java開發過程中為了找問題方便或是統計資訊方便,總免不了要打各種日誌。之前的各個專案都是配置好的,maven配置的時候,會看到各種型別的Log包:slf4j、log4j、commons-log、logback等等,看著就煩,今天仔細瞭解了一下,有點收穫,記錄一下起因使用JA JCL、SLF4J、Log4J、Log4J2、LogBack和JUL之間的關係,你搞清楚了嗎?寫在前面 日誌元件是我們平時開發過程中必然會用到的元件。在系統中正確的列印日誌至少有下面的這些好處: 除錯:在程式的開發過程中,必然需要我們不斷的除錯以達到程式能正確執行的狀態 。記錄日誌可以讓開發人員清楚的瞭解程式的執行狀態定位問題; 資訊收集:在DT時代,誰掌握了資料誰就掌握了主動權。現在主流的日誌系統 log4j、slf4j、logback的關係剖析一、日誌框架介面與日誌框架實現 slf4j是一系列日誌的通用介面,實現日誌記錄功能時需要載入其他的日誌框架實現jar包。log4j和logback是slf4j日誌框架的兩種實現,目前logback的效率較log4j更高一點。程式碼中記錄日誌的方式主要有兩種: 1)呼叫slf4j日誌系統的 commons-logging的使用簡介、Java的那些日誌---commons-loging 、log4j 、slf4j 、LogBack 的理解與區分簡介: Jakarta Commons-logging(JCL)是apache最早提供的日誌的門面介面。提供簡單的日誌實現以及日誌解耦功能。 JCL能夠選擇使用Log4j(或其他如slf4j等)還是JDK Logging,但是他不依賴Log4 幾句話闡述清楚log4j、slf4j、logback、tinylog之間的區別1.早期,jdk不提供日誌功能,所以程式設計師要想輸出相關資訊,基本上都使用 System.out.println( ); 2.在這個背景下,一位偉大的程式設計師,暫且稱呼為 偉員, 設計了一套系統的日誌功能程式碼,也就是log4j,廣受程式設計師歡迎 3.在這之後,log4j表示jdk可以 JavaWeb 三大器--Listener、Filter 和Interceptor 總結說明:web.xml的載入順序是:【Context-Param】->【Listener】->【Filter】->【Servlet】,而同個型別之間的實際程式呼叫的時候的順序是根據對應的Mapping的順序進行呼叫。 詳細介紹:web.xml載入順序與web.xml常用節點解析 轉自:ht C++Primer Plus筆記——第十七章 輸入、輸出和檔案總結及程式清單目錄 本章小結 程式清單 核心格式化 本章小結 流是進出程式的位元組流。緩衝區足記憶體中的臨時儲存區域,是程式與檔案或其他I/O裝置之間的橋樑。 資訊在緩衝區和檔案之間傳輸時,將使用裝置(如磁碟驅動器)處理效率最高的尺寸 C++Primer Plus筆記——第十五章 友元、異常和其他總結及程式清單目錄 本章小結 程式清單 友元類 巢狀類 異常 本章小結 友元使得能夠為類開發更靈活的介面。類可以將其他函式、其他類和其他類的成員函式作為友元。在某些情況下,可能需要使用前向宣告,需要特別注意類和方法宣告的順序 flume(三):常見source、channel和sink總結一、核心關注點 因為flume版本不同,source、channel和sink的介面都是不一樣的,所以需要使用對應版本的介面。 本文以flume1.6.0為例,參考http://archive.cloudera.com/cdh5/cdh/5/flume-ng-1.6.0-c logback和log4j比較,前者是後者改良,logback配置詳解一、logback的介紹 Logback是由log4j創始人設計的另一個開源日誌元件,官方網站: http://logback.qos.ch。它當前分為下面下個模組: logback-core:其它兩個模組的基礎模組 logback-classic:它是log4j shell中的fork、source和exec總結(包括環境變數)摘要:對fork,source和exec三種方式執行shell指令碼的總結。 準備知識 1.我們所執行的任何程式,都是由父程序(parent process)所產生出來的一個子程序(child process),子程序在結束後,將返回到父程序去。此一現像在Linux系統中被稱為 fork。當子程序被產生 sqlite 檢視、觸發器、索引和事務總結一 檢視 檢視即虛擬表,它的內容都是派生自其他表的查詢結果,雖然看起來像基本表,但不是基本表,因為檢視的內容是動態生成的。 檢視的用處是將頻繁使用的複雜的查詢放進一個虛擬表,方便查詢。 建立檢視 creat view name as select-stm java中常用的日誌框架-logback和log4j本文主要記錄 一下博主對sl4j和log4j&logback關係的理解及後面兩種日誌框架的配置和區別 三者之間的關係 三者之間的關係:sl4j是介面,log4j和logback是實現 如下圖 logback是直接實現了sl4j,而log4 一文講盡門面日誌slf4j和log4j、log4j2、logback依賴jar引用關係公眾號Mac程式碼分割閱讀連結 前言 之前都是使用SparkStreaming開發,最近打算學習一下Flink,就從官網下載了Flink 1.11,打算搞一個客戶端,將程式提交在yarn上。因為Flink從1.7之後就不再提供Hadoop的依賴,所以很多依賴就要自己下載,於是各種ClassNotFoundEx slf4j、apache common logging、log4j、logback關係比較一、Log4j Log4j是一個Java日誌框架,使用Log4j可以對日誌等級、日誌輸出地(檔案或網路等)、日誌輸出格式各方面作出有效的管理。 Log4j的結構並不複雜,主要使用了策略模式。 每個Logger有多個Appender,Appender決定寫日誌的策略。 Log4j、Logback、slf4j比較Log4j Log4j = Log for Java. author: Ceki Gülcü license: Apache License V2.0 L 日誌組件介紹(common-logging,log4j,slf4j,logback)log 新的 開源 消息 輸出 logger div com enable common-logging common-logging是apache提供的一個通用的日誌接口。用戶可以自由選擇第三方的日誌組件作為具體實現,像log4j,或者jdk自帶的logging, com +++++++btrfs、壓縮/解壓縮和編程之if和for總結linuxbtrfsfilesystem device balance subvolume創建、掛載、子卷的掛載、創建、向btrfs中添加或移除設備、重新均衡數據<btrfs系統不支持,網上摘錄,以後再修改....>1、父卷可直接格式化、掛載及同LVM邏輯卷一樣可以動態的擴展和縮減2、原生RAID 【轉】java日誌組件介紹(common-logging,log4j,slf4j,logback )微秒 是把 輸出重定向 gin ons java 循環 框架 log4j.jar common-logging common-logging是apache提供的一個通用的日誌接口。用戶可以自由選擇第三方的日誌組件作為具體實現,像log4j,或者jdk自帶的lo window.document的屬性、方法和事件的總結http 兄弟節點 保留 前綴 ron 匹配 eno form link document屬性作為window對象的一個子對象被創建,是用於訪問頁面中所有元素的對象,這裏簡單整理下,方便學習js的朋友javascript中window.document的屬性、方法和事件的總 |