我們為啥要用日志?
最初我們開始接觸Java的時候,我們通常會使用System.out.println()
將我們想要知道的信息打印到控制台。
但是,如果在服務器上我們去運行我們的Java程序,這個時候就凸顯了日志對於一個系統來說的重要性,查找異常信息、分析系統運行情況等都需要用到日志。
為什么是SLF4J?
默認情況下,Spring Boot會用SLF4J + Logback
來記錄日志,並用INFO
級別輸出到控制台。
SLF4J,即簡單日志門面(Simple Logging Facade for Java),它可以看做是一個接口框架,並不提供具體的實現,具體的實現由類似於
Log4j
,Log4j2
,Logback
等等這樣的日志框架去完成。
我們為什么要在實際的應用中去使用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.file
或logging.path
屬性。但是這倆屬性同時配置的時候,只有logging.file
生效!
公眾號
原創文章,文筆有限,才疏學淺,文中若有不正之處,萬望告知。