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

詳解記錄Java Log的幾種方式

 更新時間:2021年06月04日 15:47:11   作者:EvelynHouseba  
很多小伙伴不知道如何記錄日志,今天特地整理了本篇文章,文中有非常詳細的介紹及代碼示例,對小伙伴們很有幫助,需要的朋友可以參考下

在Java中記錄日志的方式有如下幾種:

一、System.out.println(最簡單)

1、輸出到控制臺:System.out.println("XXX");
2、輸出到指定文件:

import java.io.PrintStream;
 
PrintStream ps = new PrintStream("D:\\test.txt");
System.setOut(ps);
System.out.println("XXX");

二、java.util.logging(相對簡單)

JDK自帶的logging.jar中的方法。通過位于JDK安裝路徑下的jre/lib/logging.properties文件進行配置。

1、默認配置如下:

handlers= java.util.logging.ConsoleHandler
 
.level= INFO
 
# default file output is in user's home directory.
java.util.logging.FileHandler.pattern = %h/java%u.log
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter
 
# Limit the message that are printed on the console to INFO and above.
java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

默認是輸出到控制臺,如果既想在控制臺,又想在文件中,要修改如下配置:

handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler

Logger的級別按降序排序如下:

  • SEVERE(最高值)
  • WARNING
  • INFO 
  • CONFIG 
  • FINE 
  • FINER 
  • FINEST(最低值)

默認所有l(wèi)og的輸出級別是INFO(.level= INFO),比INFO更低的日志不會顯示。
控制臺的Log輸出級別可以特殊控制,默認也是INFO,可以修改如下配置:

java.util.logging.ConsoleHandler.level = INFO

2、實例

(1)輸出到控制臺:

Logger log = Logger.getLogger("testLog"); 
log.setLevel(Level.WARNING);
log.warning("xxxx testLog warning");

輸出結(jié)果:

(2)輸出到文件:

FileHandler fileHandler;//文件控制器
try {
    fileHandler = new FileHandler("D:\\temp\\text.log");
	fileHandler.setLevel(Level.INFO);
	fileHandler.setFormatter(new Formatter() {//定義一個匿名類
         //Formatter 接受 LogRecord,并將它轉(zhuǎn)換為一個字符串。 
         @Override
         public String format(LogRecord record) {
             
             Date date = new Date();  
             String sDate = date.toString();  
             return "[" + sDate + "]" + "[" + record.getLevel() + "]" + ":" +  record.getMessage() + "\n";  
         }
    });
 
	Logger log = Logger.getLogger("testLog");
	log.addHandler(fileHandler); 
	log.info("aaa"); 
} catch (SecurityException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

默認狀況下, 日志會打印到控制臺。添加 filehandler 后, 會同時寫入文件。輸出結(jié)果:


三、log4j(最強大)

可以通過配置 .properties 或是 .xml 的文件, 配置日志的目的地,格式等等。具體配置不在此處詳述。

1、Log4J的輸出級別按降序排序如下:

  • OFF             最高等級,關(guān)閉日志
  • FATAL          可能導(dǎo)致應(yīng)用中止的嚴(yán)重事件錯誤 
  • ERROR       嚴(yán)重錯誤,主要是程序錯誤 
  • WARN         一般警告 
  • INFO           一般顯示信息 
  • DEBUG       調(diào)試信息 
  • TRACE        比DEBUG更細粒度的事件信息 
  • ALL              最低等級

2、實例

import org.apache.log4j.Logger;
public class Log4jTest {
 
    private static Logger log = Logger.getLogger(Log4jTest.class);
    public void log() {
        log.info("hello this is log4j info log");
    }
 
    public static void main(String[] args) {
        Log4jTest test = new Log4jTest();
        test.log();
    }
}

除了上述幾種,還存在logback等其他的日志框架,對于開發(fā)者而言,每種日志都有不同的寫法。如果以實際的日志框架來進行編寫,之后更換日志系統(tǒng)就很麻煩。

由此誕生了以下的門面類日志框架(它們都不是日志的最終實現(xiàn),只是一套規(guī)范),將系統(tǒng)和具體的日志實現(xiàn)框架解耦合。

四、commons-logging(全稱:Jakarta Commons Logging

commons-logging是為那些需要建立在不同環(huán)境下使用不同日志架構(gòu)的組件或庫的開發(fā)者創(chuàng)建的,由commons-logging在運行時決定使用哪種日志架構(gòu)。

默認的LogFactory是按照下列的步驟去發(fā)現(xiàn)并決定那個日志工具將被使用的(按照順序,尋找過程會在找到第一個工具時中止):

  • 首先在classpath下尋找自己的配置文件commons-logging.properties,使用其中定義的Log實現(xiàn)類;
  • 找不到commons-logging.properties文件,則在查找是否已定義系統(tǒng)環(huán)境變量org.apache.commons.logging.Log,使用其定義的Log實現(xiàn)類;
  • 否則,查看classpath中是否有Log4j的包,有則自動使用Log4j作為日志實現(xiàn)類;
  • 否則,使用JDK自身的日志實現(xiàn)類(JDK1.4以后才有日志實現(xiàn)類);
  • 否則,使用commons-logging自己提供的一個簡單的日志實現(xiàn)類SimpleLog;

在common-logging.properties文件中設(shè)置實現(xiàn)Log接口的類:

org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger

commons-logging結(jié)合Log4J的實例

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
 
public class JCLTest {
 
    private static Log log = LogFactory.getLog(JCLTest.class);
    public void log() {
       
       log.info("hello this is JCL info log");
    }
 
    public static void main(String[] args) {
       JCLTest test = new JCLTest();
       test.log();
    }
}

五、slf4j(全稱:Simple Logging Facade for Java,簡單日志門面

SLF4j+Log4j 與 JCL+Log4J 的使用方式差不多,主要差異就在 SLF4J 用 jar 來告知用哪種日志實現(xiàn),而 JCL 是通過配置文件來獲得該選擇哪個日志實現(xiàn)。

實例

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Test {
 
    private static final Logger log = LoggerFactory.getLogger(Test.class);
    public void test() {
        log.info("hello this is {} info log", "SLF4J");
    }
}

到此這篇關(guān)于詳解記錄Java Log的幾種方式的文章就介紹到這了,更多相關(guān)Java Log內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java8中的默認垃圾回收器(GC)

    java8中的默認垃圾回收器(GC)

    這篇文章主要介紹了java8中的默認垃圾回收器(GC),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Mybatis的update更新批量與普通解決方式對比

    Mybatis的update更新批量與普通解決方式對比

    這篇文章主要為大家介紹了Mybatis的update更新批量與普通解決方式對比,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-04-04
  • spring中@Reference注入為空的解決方法

    spring中@Reference注入為空的解決方法

    今天上線遇到了問題,所以抽空記錄一下,本文主要介紹了spring中@Reference注入為空的解決方法,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • SpringBoot項目啟動報錯:命令行太長解決的兩種解決方法

    SpringBoot項目啟動報錯:命令行太長解決的兩種解決方法

    SpringBoot項目啟動時可能會遇到命令行太長的錯誤,本文介紹兩種解決方法修改.idea\workspace.xml文件和執(zhí)行maven的clean命令或重啟IDEA,這些操作可以有效解決啟動問題,需要的朋友可以參考下
    2024-10-10
  • SpringBoot給類進行賦初值的四種方式

    SpringBoot給類進行賦初值的四種方式

    這篇文章主要介紹了springboot給類進行賦初值的四種方式,并通過代碼示例給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-08-08
  • Spring?web開發(fā)教程之Request獲取3種方式

    Spring?web開發(fā)教程之Request獲取3種方式

    這篇文章主要給大家介紹了關(guān)于Spring?web開發(fā)教程之Request獲取3種方式的相關(guān)資料,request對象是從客戶端向服務(wù)器發(fā)出請求,包括用戶提交的信息以及客戶端的一些信息,需要的朋友可以參考下
    2023-11-11
  • SpringBoot接口防重復(fù)提交的三種解決方案

    SpringBoot接口防重復(fù)提交的三種解決方案

    在Web開發(fā)中,防止用戶重復(fù)提交表單是一個常見的需求,用戶可能會因為網(wǎng)絡(luò)延遲、誤操作等原因多次點擊提交按鈕,導(dǎo)致后臺接收到多個相同的請求,本文將介紹幾種在Spring Boot中實現(xiàn)接口防重復(fù)提交的方法,需要的朋友可以參考下
    2024-11-11
  • Java用鄰接矩陣存儲圖的示例代碼

    Java用鄰接矩陣存儲圖的示例代碼

    鄰接矩陣通常采用一個一維數(shù)組存儲圖中節(jié)點的信息,采用一個二維數(shù)組存儲圖中節(jié)點之間的鄰接關(guān)系。本文將利用Java實現(xiàn)用鄰接矩陣存儲圖,需要的可以參考一下
    2022-06-06
  • 詳解Java解析XML的四種方法

    詳解Java解析XML的四種方法

    本篇文章主要介紹了java解析XML的幾種方式,XML現(xiàn)在已經(jīng)成為一種通用的數(shù)據(jù)交換格式,給數(shù)據(jù)集成與交互提供了方便,有需要的可以了解一下。
    2016-11-11
  • Java 類與對象重難點詳解

    Java 類與對象重難點詳解

    類(class)和對象(object)是兩種以計算機為載體的計算機語言的合稱。對象是對客觀事物的抽象,類是對對象的抽象。類是一種抽象的數(shù)據(jù)類型
    2021-11-11

最新評論

宜州市| 梓潼县| 景泰县| 大新县| 旌德县| 稷山县| 罗山县| 岳西县| 古田县| 武隆县| 竹溪县| 武义县| 兴城市| 屏东市| 道真| 麟游县| 名山县| 武汉市| 当涂县| 阜南县| 三河市| 达日县| 宁陵县| 宝山区| 曲周县| 阳朔县| 桦南县| 安康市| 高青县| 镇沅| 宜章县| 和顺县| 保康县| 南投县| 宜兰市| 阳城县| 昭平县| 屏南县| 罗源县| 陆川县| 黄陵县|