1. 程式人生 > >slf4j、logback和log4j總結

slf4j、logback和log4j總結

java開發過程中為了找問題方便或是統計資訊方便,總免不了要打各種日誌。之前的各個專案都是配置好的,maven配置的時候,會看到各種型別的Log包:slf4j、log4j、commons-log、logback等等,看著就煩,今天仔細瞭解了一下,有點收穫,記錄一下

起因

使用JAVA的kafka api寫main方法進行開發測試,發現總報錯

123log4j: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>

啟動,報錯

12345678log4j: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

相關推薦

slf4jlogbacklog4j總結

java開發過程中為了找問題方便或是統計資訊方便,總免不了要打各種日誌。之前的各個專案都是配置好的,maven配置的時候,會看到各種型別的Log包:slf4j、log4j、commons-log、logback等等,看著就煩,今天仔細瞭解了一下,有點收穫,記錄一下起因使用JA

JCLSLF4JLog4JLog4J2LogBackJUL之間的關係,你搞清楚了嗎?

寫在前面 日誌元件是我們平時開發過程中必然會用到的元件。在系統中正確的列印日誌至少有下面的這些好處: 除錯:在程式的開發過程中,必然需要我們不斷的除錯以達到程式能正確執行的狀態 。記錄日誌可以讓開發人員清楚的瞭解程式的執行狀態定位問題; 資訊收集:在DT時代,誰掌握了資料誰就掌握了主動權。現在主流的日誌系統

log4jslf4jlogback的關係剖析

一、日誌框架介面與日誌框架實現 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

幾句話闡述清楚log4jslf4jlogbacktinylog之間的區別

1.早期,jdk不提供日誌功能,所以程式設計師要想輸出相關資訊,基本上都使用 System.out.println( ); 2.在這個背景下,一位偉大的程式設計師,暫且稱呼為 偉員, 設計了一套系統的日誌功能程式碼,也就是log4j,廣受程式設計師歡迎 3.在這之後,log4j表示jdk可以

JavaWeb 三大器--ListenerFilter Interceptor 總結

說明:web.xml的載入順序是:【Context-Param】->【Listener】->【Filter】->【Servlet】,而同個型別之間的實際程式呼叫的時候的順序是根據對應的Mapping的順序進行呼叫。 詳細介紹:web.xml載入順序與web.xml常用節點解析 轉自:ht

C++Primer Plus筆記——第十七章 輸入輸出檔案總結及程式清單

目錄 本章小結 程式清單 核心格式化 本章小結        流是進出程式的位元組流。緩衝區足記憶體中的臨時儲存區域,是程式與檔案或其他I/O裝置之間的橋樑。 資訊在緩衝區和檔案之間傳輸時,將使用裝置(如磁碟驅動器)處理效率最高的尺寸

C++Primer Plus筆記——第十五章 友元異常其他總結及程式清單

目錄 本章小結 程式清單 友元類 巢狀類  異常 本章小結        友元使得能夠為類開發更靈活的介面。類可以將其他函式、其他類和其他類的成員函式作為友元。在某些情況下,可能需要使用前向宣告,需要特別注意類和方法宣告的順序

flume(三):常見sourcechannelsink總結

一、核心關注點 因為flume版本不同,source、channel和sink的介面都是不一樣的,所以需要使用對應版本的介面。 本文以flume1.6.0為例,參考http://archive.cloudera.com/cdh5/cdh/5/flume-ng-1.6.0-c

logbacklog4j比較,前者是後者改良,logback配置詳解

一、logback的介紹   Logback是由log4j創始人設計的另一個開源日誌元件,官方網站: http://logback.qos.ch。它當前分為下面下個模組:   logback-core:其它兩個模組的基礎模組   logback-classic:它是log4j

shell中的forksourceexec總結(包括環境變數)

摘要:對fork,source和exec三種方式執行shell指令碼的總結。 準備知識 1.我們所執行的任何程式,都是由父程序(parent process)所產生出來的一個子程序(child process),子程序在結束後,將返回到父程序去。此一現像在Linux系統中被稱為 fork。當子程序被產生

sqlite 檢視觸發器索引事務總結

一 檢視 檢視即虛擬表,它的內容都是派生自其他表的查詢結果,雖然看起來像基本表,但不是基本表,因為檢視的內容是動態生成的。 檢視的用處是將頻繁使用的複雜的查詢放進一個虛擬表,方便查詢。 建立檢視 creat view name as select-stm

java中常用的日誌框架-logbacklog4j

本文主要記錄 一下博主對sl4j和log4j&logback關係的理解及後面兩種日誌框架的配置和區別 三者之間的關係 三者之間的關係:sl4j是介面,log4j和logback是實現 如下圖 logback是直接實現了sl4j,而log4

一文講盡門面日誌slf4jlog4jlog4j2logback依賴jar引用關係

公眾號Mac程式碼分割閱讀連結 前言 之前都是使用SparkStreaming開發,最近打算學習一下Flink,就從官網下載了Flink 1.11,打算搞一個客戶端,將程式提交在yarn上。因為Flink從1.7之後就不再提供Hadoop的依賴,所以很多依賴就要自己下載,於是各種ClassNotFoundEx

slf4japache common logginglog4jlogback關係比較

一、Log4j Log4j是一個Java日誌框架,使用Log4j可以對日誌等級、日誌輸出地(檔案或網路等)、日誌輸出格式各方面作出有效的管理。 Log4j的結構並不複雜,主要使用了策略模式。 每個Logger有多個Appender,Appender決定寫日誌的策略。

Log4jLogbackslf4j比較

Log4j Log4j = Log for Java. author: Ceki Gülcü license: Apache License V2.0 L

日誌組件介紹(common-logging,log4jslf4jlogback

log 新的 開源 消息 輸出 logger div com enable common-logging common-logging是apache提供的一個通用的日誌接口。用戶可以自由選擇第三方的日誌組件作為具體實現,像log4j,或者jdk自帶的logging, com

+++++++btrfs壓縮/解壓縮編程之iffor總結

linuxbtrfsfilesystem device balance subvolume創建、掛載、子卷的掛載、創建、向btrfs中添加或移除設備、重新均衡數據<btrfs系統不支持,網上摘錄,以後再修改....>1、父卷可直接格式化、掛載及同LVM邏輯卷一樣可以動態的擴展和縮減2、原生RAID

【轉】java日誌組件介紹(common-logging,log4jslf4jlogback

微秒 是把 輸出重定向 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的屬性、方法和事件的總