Spring Boot 2.x (八):日志框架的使用


我們為啥要用日志?

最初我們開始接觸Java的時候,我們通常會使用System.out.println()將我們想要知道的信息打印到控制台。
但是,如果在服務器上我們去運行我們的Java程序,這個時候就凸顯了日志對於一個系統來說的重要性,查找異常信息、分析系統運行情況等都需要用到日志。

為什么是SLF4J?

默認情況下,Spring Boot會用SLF4J + Logback來記錄日志,並用INFO級別輸出到控制台。

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

我們為什么要在實際的應用中去使用SLF4J的API呢?
在阿里巴巴的開發手冊上也給我們明確【強制】規定了

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

SLF4J讓你的代碼獨立於任何特定的日志記錄API,可以讓我們的程序更加的健壯,不會讓你因為不同日志的實現而導致的問題去分心。

使用SLF4J的另外一個理由就是,它可以支持占位符

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

這段程序在運行時刻才會拿到name這不僅縮減了代碼中的許多字符串連接,而且減少了創建String對象所需要的堆內存資源

怎么使用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,不要選錯了喲。

配合Lombok使用@Slf4j

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

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

然后打開IDEA的設置項,在Plugins中查找:

注意安裝插件后記得重啟使其生效!

然后,我們在項目中就可以這樣去使用:

@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生效!

公眾號

原創文章,文筆有限,才疏學淺,文中若有不正之處,萬望告知。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM