天天看點

Java【日志】

2.日志

2.1概述【了解】

  • 概述

    程式中的日志可以用來記錄程式在運作的時候點點滴滴。并可以進行永久存儲。

  • 日志與輸出語句的差別
輸出語句 日志技術
取消日志 需要修改代碼,靈活性比較差 不需要修改代碼,靈活性比較好
輸出位置 隻能是控制台 可以将日志資訊寫入到檔案或者資料庫中
多線程 和業務代碼處于一個線程中 多線程方式記錄日志,不影響業務代碼的性能

2.2日志體系結構和Log4J【了解】

  • 體系結構
  • Log4J

    Log4j是Apache的一個開源項目。

    通過使用Log4j,我們可以控制日志資訊輸送的目的地是控制台、檔案等位置。

    我們也可以控制每一條日志的輸出格式。

    通過定義每一條日志資訊的級别,我們能夠更加細緻地控制日志的生成過程。

    最令人感興趣的就是,這些可以通過一個配置檔案來靈活地進行配置,而不需要修改應用的代碼。

  • Apache基金會

    Apache軟體基金會(也就是Apache Software Foundation,簡稱為ASF),為支援開源軟體項目而辦的一個非盈利性組織。

2.3入門案例【應用】

  • 使用步驟
  1. 導入log4j的相關jar包
  2. 編寫log4j配置檔案
  3. 在代碼中擷取日志的對象
  4. 按照級别設定記錄日志資訊
  • 代碼示例
// log4j的配置檔案,名字為log4j.properties, 放在src根目錄下
log4j.rootLogger=debug,my,fileAppender

### direct log messages to my ###
log4j.appender.my=org.apache.log4j.ConsoleAppender
log4j.appender.my.ImmediateFlush = true
log4j.appender.my.Target=System.out
log4j.appender.my.layout=org.apache.log4j.PatternLayout
log4j.appender.my.layout.ConversionPattern=%d %t %5p %c{1}:%L - %m%n

# fileAppender��ʾ
log4j.appender.fileAppender=org.apache.log4j.FileAppender
log4j.appender.fileAppender.ImmediateFlush = true
log4j.appender.fileAppender.Append=true
log4j.appender.fileAppender.File=D:/log4j-log.log
log4j.appender.fileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.fileAppender.layout.ConversionPattern=%d %5p %c{1}:%L - %m%n

// 測試類
public class Log4JTest01 {

    //使用log4j的api來擷取日志的對象
    //弊端:如果以後我們更換日志的實作類,那麼下面的代碼就需要跟着改
    //不推薦使用
    //private static final Logger LOGGER = Logger.getLogger(Log4JTest01.class);

    //使用slf4j裡面的api來擷取日志的對象
    //好處:如果以後我們更換日志的實作類,那麼下面的代碼不需要跟着修改
    //推薦使用
    private static  final Logger LOGGER = LoggerFactory.getLogger(Log4JTest01.class);

    public static void main(String[] args) {
        //1.導入jar包
        //2.編寫配置檔案
        //3.在代碼中擷取日志的對象
        //4.按照日志級别設定日志資訊
        LOGGER.debug("debug級别的日志");
        LOGGER.info("info級别的日志");
        LOGGER.warn("warn級别的日志");
        LOGGER.error("error級别的日志");
    }
}      

2.4配置檔案詳解【了解】

  • 三個核心
  • Loggers(記錄器) 日志的級别

    Loggers元件在此系統中常見的五個級别:DEBUG、INFO、WARN、ERROR 和 FATAL。

    DEBUG < INFO < WARN < ERROR < FATAL。

    Log4j有一個規則:隻輸出級别不低于設定級别的日志資訊。

  • Appenders(輸出源) 日志要輸出的地方

    把日志輸出到不同的地方,如控制台(Console)、檔案(Files)等。

  • org.apache.log4j.ConsoleAppender(控制台)
  • org.apache.log4j.FileAppender(檔案)
  • Layouts(布局) 日志輸出的格式

    可以根據自己的喜好規定日志輸出的格式

    常用的布局管理器:

    ​ org.apache.log4j.PatternLayout(可以靈活地指定布局模式)

    org.apache.log4j.SimpleLayout(包含日志資訊的級别和資訊字元串)

org.apache.log4j.TTCCLayout(包含日志産生的時間、線程、類别等資訊)      
  • 配置根Logger
  • 格式

    log4j.rootLogger=日志級别,appenderName1,appenderName2,…

  • 日志級别

    OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定義的級别。

  • appenderName1

    就是指定日志資訊要輸出到哪裡。可以同時指定多個輸出目的地,用逗号隔開。

    例如:log4j.rootLogger=INFO,ca,fa

  • ConsoleAppender常用的選項
  • ImmediateFlush=true

    表示所有消息都會被立即輸出,設為false則不輸出,預設值是true。

  • Target=System.err

    預設值是System.out。

  • FileAppender常用的選項
  • ImmediateFlush=true

    表示所有消息都會被立即輸出。設為false則不輸出,預設值是true

  • Append=false

    true表示将消息添加到指定檔案中,原來的消息不覆寫。

    false則将消息覆寫指定的檔案内容,預設值是true。

  • File=D:/logs/logging.log4j

    指定消息輸出到logging.log4j檔案中

  • PatternLayout常用的選項
  • ConversionPattern=%m%n

    設定以怎樣的格式顯示消息

2.5在項目中的應用【應用】

  • 步驟
  1. 導入相關的依賴
  2. 将資料中的properties配置檔案複制到src目錄下
  3. 在代碼中擷取日志的對象
  4. 按照級别設定記錄日志資訊