Spring Boot 2.x(八):日誌框架的選擇和使用

咱們爲啥要用日誌?

最初咱們開始接觸Java的時候,咱們一般會使用System.out.println()將咱們想要知道的信息打印到控制檯。
可是,若是在服務器上咱們去運行咱們的Java程序,這個時候就凸顯了日誌對於一個系統來講的重要性,查找異常信息、分析系統運行狀況等都須要用到日誌。java

爲何是SLF4J?

默認狀況下,Spring Boot會用SLF4J + Logback來記錄日誌,並用INFO級別輸出到控制檯。spring

SLF4J,即簡單日誌門面(Simple Logging Facade for Java),它能夠看作是一個接口框架,並不提供具體的實現,具體的實現由相似於 Log4jLog4j2Logback等等這樣的日誌框架去完成。

咱們爲何要在實際的應用中去使用SLF4J的API呢?
在阿里巴巴的開發手冊上也給咱們明確【強制】規定了服務器

clipboard.png

而百度百科上也給出了相應的解釋:app

clipboard.png

SLF4J讓你的代碼獨立於任何特定的日誌記錄API,可讓咱們的程序更加的健壯,不會讓你由於不一樣日誌的實現而致使的問題去分心。框架

使用SLF4J的另一個理由就是,它能夠支持佔位符spring-boot

String name = "Vi";
logger.debug("My Name is {}", name);

這段程序在運行時刻纔會拿到name這不只縮減了代碼中的許多字符串鏈接,並且減小了建立String對象所須要的堆內存資源spa

怎麼使用SLF4J?

若是咱們在一個Spring Boot 的程序中去使用SLF4J,咱們不須要去引入其餘的包,由於咱們引入的有關spring-boot-starter中就已經包含了有關slf4j的jar包。咱們只須要經過LoggerFactory去獲取便可:插件

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
...
private static final Logger logger = LoggerFactory.getLogger(ResponseAop.class);

這裏須要注意看咱們選擇的是否是slf4j包下的Logger,不要選錯了喲。debug

配合Lombok使用@Slf4j

首先在pom.xml中添加Lombok的依賴:日誌

<dependency>
           <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

而後打開IDEA的設置項,在Plugins中查找:

clipboard.png

clipboard.png

注意安裝插件後記得重啓使其生效!

而後,咱們在項目中就能夠這樣去使用:

@Slf4j
public class Slf4JTest {
    public static void main(String[] args) {
        log.info("This is a Slf4jTest");
    }
}

關於日誌的配置

這裏我就偷個懶,由於網上一搜一大堆,可是實際上你用的時候仍是要根據本身的項目的狀況進行使用的(你能夠關注我,我會在後面的項目實戰中去配置,並給出源碼)。

這裏須要注意一點:默認狀況下,Spring Boot將日誌輸出到控制檯,不會寫到日誌文件。若是要編寫除控制檯輸出以外的日誌文件,則需在application.yml中設置 logging.filelogging.path屬性。可是這倆屬性同時配置的時候,只有 logging.file生效!

公衆號

clipboard.png

原創文章,文筆有限,才疏學淺,文中如有不正之處,萬望告知。
相關文章
相關標籤/搜索