中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Java中記錄Log

發布時間:2021-06-05 08:11:24 來源:億速云 閱讀:221 作者:Leah 欄目:開發技術

這期內容當中小編將會給大家帶來有關怎么在Java中記錄Log,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

一、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(最低值)

默認所有log的輸出級別是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");

輸出結果:

怎么在Java中記錄Log

(2)輸出到文件:

FileHandler fileHandler;//文件控制器
try {
    fileHandler = new FileHandler("D:\\temp\\text.log");
	fileHandler.setLevel(Level.INFO);
	fileHandler.setFormatter(new Formatter() {//定義一個匿名類
         //Formatter 接受 LogRecord,并將它轉換為一個字符串。 
         @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 后, 會同時寫入文件。輸出結果:

怎么在Java中記錄Log
怎么在Java中記錄Log

三、log4j(最強大)

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

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

  • OFF             最高等級,關閉日志

  • FATAL          可能導致應用中止的嚴重事件錯誤 

  • ERROR       嚴重錯誤,主要是程序錯誤 

  • WARN         一般警告 

  • INFO           一般顯示信息 

  • DEBUG       調試信息 

  • 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等其他的日志框架,對于開發者而言,每種日志都有不同的寫法。如果以實際的日志框架來進行編寫,之后更換日志系統就很麻煩。

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

怎么在Java中記錄Log

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

commons-logging是為那些需要建立在不同環境下使用不同日志架構的組件或庫的開發者創建的,由commons-logging在運行時決定使用哪種日志架構。

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

  • 首先在classpath下尋找自己的配置文件commons-logging.properties,使用其中定義的Log實現類;

  • 找不到commons-logging.properties文件,則在查找是否已定義系統環境變量org.apache.commons.logging.Log,使用其定義的Log實現類;

  • 否則,查看classpath中是否有Log4j的包,有則自動使用Log4j作為日志實現類;

  • 否則,使用JDK自身的日志實現類(JDK1.4以后才有日志實現類);

  • 否則,使用commons-logging自己提供的一個簡單的日志實現類SimpleLog;

在common-logging.properties文件中設置實現Log接口的類:

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

commons-logging結合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 來告知用哪種日志實現,而 JCL 是通過配置文件來獲得該選擇哪個日志實現。

實例

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");
    }
}

上述就是小編為大家分享的怎么在Java中記錄Log了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

武功县| 嘉兴市| 遂宁市| 马关县| 许昌县| 远安县| 鱼台县| 石门县| 太仆寺旗| 固镇县| 西吉县| 远安县| 承德市| 郯城县| 伊宁市| 义乌市| 保康县| 双流县| 武乡县| 新源县| 乌鲁木齐市| 松滋市| 海晏县| 宜兰县| 白城市| 乐业县| 六盘水市| 剑川县| 灵宝市| 武城县| 巍山| 勐海县| 宁国市| 洛南县| 河南省| 天峻县| 晋江市| 北宁市| 中西区| 兰州市| 如东县|