java常見log日志的使用方法解析
前言
log日志可以debug錯誤或者在關(guān)鍵位置輸出想要的結(jié)果
java日志使用一般有原生logger、log4j、Slf4j等
一般的日志級別都有如下(不同日志不一樣的方法參數(shù),注意甄別)
參數(shù) | 描述 |
---|---|
OFF、ON | 不輸出或者輸出所有級別信息,通常使用在setLevel方法中 |
FATAL | 致命錯誤 |
ERROR | 錯誤error |
WARN | 告警信息 |
INFO | info信息 |
DEBUG | 調(diào)試信息 |
TRACE | 運行軌跡信息 |
CONFIG | 設(shè)定配置信息 |
FINE | 級別輕微信息 |
FINER | 級別更輕微信息 |
FINEST | 級別最輕微信息 |
1. Java.util.Logger
科普一下原生日志生成工具,主要引用import java.util.logging.Logger;
源代碼函數(shù)大致有如下方法:
(給定消息將被轉(zhuǎn)發(fā)到所有注冊的輸出處理程序?qū)ο螅?/p>
// 嚴重信息 public void severe(String msg) { log(Level.SEVERE, msg);} // 警告信息 public void warning(String msg) { log(Level.WARNING, msg);} // info信息 public void info(String msg) {log(Level.INFO, msg);} // 設(shè)定配置信息 public void config(String msg) {log(Level.CONFIG, msg);} // 級別小信息 public void fine(String msg) {log(Level.FINE, msg);} // 級別更小信息 public void finer(String msg) {log(Level.FINE, msg);} // 級別最小信息 public void finest(String msg) {log(Level.FINE, msg);}
具體示例如下:
package com.gaokaoli.logger; import java.util.logging.Logger; public class text1 { public static void main(String []args){ Logger logger = Logger.getLogger("text1"); logger.severe("嚴重信息"); logger.warning("警示信息"); logger.info("info信息"); logger.config("設(shè)定配置信息"); logger.fine("級別小的信息"); logger.finer("級別更小的信息"); logger.finest("級別最小的信息"); } }
輸出截圖如下:
可以看到小于info級別的信息不會在終端上顯示輸出
通過logger.setLevel(Level.ALL);
來控制輸出的級別。
ALL則輸出severe、warning以及info,OF不輸出,如果設(shè)置WARNING,則只輸出severe以及warning;同理可推其他設(shè)置;
方法中也有通過調(diào)用提供的供應(yīng)商函數(shù)來構(gòu)造消息,并將其轉(zhuǎn)發(fā)到所有注冊的輸出處理程序?qū)ο蟆?/p>
// 嚴重信息 public void severe(Supplier<String> msgSupplier) {log(Level.SEVERE, msgSupplier);} // 警告信息 public void warning(Supplier<String> msgSupplier) {log(Level.WARNING, msgSupplier);} // info信息 public void info(Supplier<String> msgSupplier) {log(Level.INFO, msgSupplier); } // 設(shè)定配置信息 public void config(Supplier<String> msgSupplier) {log(Level.CONFIG, msgSupplier);} // 級別小信息 public void fine(Supplier<String> msgSupplier) {log(Level.FINE, msgSupplier);} // 級別更小信息 public void finer(Supplier<String> msgSupplier) {log(Level.FINER, msgSupplier);} // 級別最小信息 public void finest(Supplier<String> msgSupplier) {log(Level.FINEST, msgSupplier);}
2. org.apache.logging.log4j
在xml文件中導(dǎo)入依賴包
<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.14.1</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.14.1</version> </dependency>
示例代碼如下:
package com.gaokaoli.logger; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; public class test3 { public static void main(String []args){ Logger logger = LogManager.getLogger("text3"); logger.fatal("fatal錯誤"); logger.error("error錯誤"); logger.warn("warn警示"); logger.info("info基本信息"); logger.debug("debug調(diào)試"); logger.trace("trace 信息"); } }
輸出結(jié)果如下:
其方法大致都有如下:
具體使用什么方法可對應(yīng)查看
3. org.slf4j.Logger
目前主流的日志框架,可以使用占位符進行參數(shù)占位
主要通過slf4j作為日志輸出
在每個類的開頭都加入如下:
在xml文件中引入依賴包
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.25</version> <scope>compile</scope> </dependency>
如果不引入或者引入錯誤
會出現(xiàn)如下問題:出現(xiàn)SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder“.的解決方法
代碼中通過引用通過
import org.slf4j.Logger; import org.slf4j.LoggerFactory;
具體示例代碼如下:
import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class text2 { public static final Logger logger = LoggerFactory.getLogger(text2.class); public static void main(String []args){ logger.error("error錯誤"); logger.warn("warn警示"); logger.info("info基本信息"); logger.debug("debug調(diào)試"); logger.trace("trace信息"); } }
截圖如下:
通過輸出結(jié)果可看到
LoggerFactory.getLogger輸出的結(jié)果帶有類的相對路徑,便于開發(fā)
到此這篇關(guān)于java常見log日志的使用方法解析的文章就介紹到這了,更多相關(guān)java常見log日志內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺談spring方法級參數(shù)校驗(@Validated)
這篇文章主要介紹了淺談spring方法級參數(shù)校驗(@Validated),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06Java中shiro框架和security框架的區(qū)別
這篇文章主要介紹了Java中shiro框架和security框架的區(qū)別,shiro和security作為兩款流行的功能強大的且易于使用的java安全認證框架,在近些年中的項目開發(fā)過程中使用廣泛,今天我們就來一起了解一下兩者的區(qū)別2023-08-08Java BigDecimal解決double精度丟失的問題
我們在日常開發(fā)中, 有很多時候會遇到小數(shù)(double類型)精確計算,本文主要介紹了Java BigDecimal解決double精度丟失的問題,具有一定的參考價值,感興趣的可以了解一下2023-11-11java實現(xiàn)批量下載 多文件打包成zip格式下載
這篇文章主要為大家詳細介紹了java實現(xiàn)批量下載、將多文件打包成zip格式下載,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-07-07java使用篩選法求n以內(nèi)的素數(shù)示例(java求素數(shù))
這篇文章主要介紹了java使用篩選法求n以內(nèi)的素數(shù)示例(java求素數(shù)),需要的朋友可以參考下2014-04-04