亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringBoot使用slf4j日志并輸出到文件中的操作方法

 更新時間:2023年08月16日 08:43:53   作者:99年的可樂  
這篇文章主要介紹了SpringBoot使用slf4j日志并輸出到文件中,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

slf4j日志(3月11日)

再使用前,先了解一下介紹,否則你也不會用!

1、日志級別

  • SLF4J將日志分為trace、debug、info、warn、error五個級別,每個級別對應記錄不同的日志,對應不同的使用場景。
  • 日志級別從低到高分為

TRACE < DEBUG < INFO < WARN < ERROR < FATAL

如果設置為 WARN ,則低于 WARN 的信息都不會輸出

一般設置為 DEBUG 就夠用了,看具體的業(yè)務需求,開發(fā)時設置成 trace 方便定位問題,在生產環(huán)境上,將這個日志級別再設置成 error 級別即可。

trace

trace是最低優(yōu)先級的日志,一般用來追蹤詳細的程序運行流,比如程序的運行過程中,運行到了哪一個方法,進入了哪一條分支。通過trace程序的運行流程,可以判斷程序是否按照期望的邏輯在運行。舉個例子,有以下代碼段。

public class Car{
//點火
public void fire(){
log.trace("fire")
...
}

debug

debug是比trace高一級別的日志,該級別的日志就是用來debug用的。這類日志往往用在判斷是否有出現bug的場景,且往往記錄了代碼運行的詳細信息,比如方法調用傳入的參數信息。

假設運行的過程中出現了問題,為了定位問題的原因,可以使用debug級別的日志來記錄檔位,通過記錄運行時傳入的gear來判斷是不是因為檔位輸入錯誤而導致Car起步失敗。

//掛檔
public void gear(int gear){
log.trace("gear")
//記錄檔位
log.debug(gear)
...
}

info

info比debug高一級別,用來記錄程序運行的一些關鍵信息,它不像trace那樣記錄程序運行的整個流程,也不像debug那樣為了解決問題而記錄詳細的信息。

info記錄的是整個系統的運行信息,比如系統運行到了哪一個階段,到達了哪一個狀態(tài)。還是以車啟動為例子,將啟動的代碼修改如下。

public void static main(String[] args){
Car car = new Car();
car.fire();
car.clutch();
car.gear(1);
car.looseBrake();
log.info("car is ready to run faster !");
}
可以看到,運行完looseBrake方法之后,使用info記錄了車的狀態(tài),車已經完成了起步了,可以踩油門加速了。

warn

warn比info的級別更高,用來記錄一些警告信息。警告信息表示,程序進入了一個特殊的狀態(tài),在該狀態(tài)下程序可以繼續(xù)運行,但是不建議讓程序進入該狀態(tài),因為該狀態(tài)可能導致結果出現問題

車啟動的過程中如果以大于1檔起步,就使用warn記錄警告,告訴調用者不推薦這樣使用,實際上2檔起步也是可以的,但可能會出問題

//掛檔
public void gear(int gear){
log.trace("gear")
//記錄檔位
log.debug(gear)
if(gear > 1){
log.warn("gear "+ gear +" is too high !")
}
...
}

error

error級別的日志是最高優(yōu)先級了,用來記錄運行時的錯誤信息,表示程序運行過程中出現了需要被解決的問題,往往是一些異常。使用error日志的時候,一般會將詳細的異常出現的原因記錄。

public void static main(String[] args){
Car car = new Car();
try{
car.fire();
car.clutch();
car.gear(1);
car.looseBrake();
}catch(Exception e){
log.error("run failed !",e.getCause())
}
log.info("car is ready to run faster !");
}

2、spring boot使用 日志接口介紹

SpringBoot 在所有內部日志中使用Commons Logging,但是默認配置也提供了對常用日志的支持,如:Java Util Logging,Log4J, Log4J2和Logback。每種Logger都可以通過配置使用控制臺或者文件輸出日志內容。

SLF4J類似于Commons Logging,也是一個日志接口,而Logback類似于Log4j,是一個日志的實現。

根據不同的日志系統,你可以按如下規(guī)則組織配置文件名,就能被正確加載:

Spring Boot官方推薦使用帶有 -spring 的文件名作為你的日志配置(如logback-spring.xml,而不是logback.xml),命名為logback-spring.xml的日志配置文件,spring boot可以為它添加一些spring boot特有的配置項(下面會提到)。

默認的命名規(guī)則,并且放在 src/main/resources 下面即可

  • Logback:logback-spring.xml, logback-spring.groovy, logback.xml, logback.groovy
  • Log4j:log4j-spring.properties, log4j-spring.xml, log4j.properties, log4j.xml
  • Log4j2:log4j2-spring.xml, log4j2.xml
  • JDK (Java Util Logging):logging.properties

引入依賴

spring-boot-starter 這個包就自帶了 logging 的依賴包,SpringBoot會默認使用 logback 作為日志框架,在生成springboot項目的時候可以直接勾選logback,那么就可以直接使用logback了。手動添加的話,建議使用slf4j+logback,后面項目更容易維護:

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

日志配置類介紹

如下配置將:

  • 在根目錄 applog 中每天生成一個文件夾,并生成一個天級別的日志文件。
  • Logger標簽:作為日志的記錄器,把它關聯到應用的對應的context上后,主要用于存放日志對象,也可以定義日志類型、級別。
  • Appender主要用于指定日志輸出的目的地,目的地可以是控制臺、文件、遠程套接字服務器、 MySQL、PostreSQL、 Oracle和其他數據庫、 JMS和遠程UNIX Syslog守護-進程等。
  • Layout 負責把事件轉換成字符串,格式化的日志信息的輸出

logback-spring.xml,放在 src/main/resources 下面

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <contextName>logback</contextName>
    <!--輸出到控制臺-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <!--按天生成日志,即一天只生成一個文件夾和一個日志文件-->
    <appender name="logFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <Prudent>true</Prudent>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>
                applog/%d{yyyy-MM-dd}/%d{yyyy-MM-dd}.log
            </FileNamePattern>
        </rollingPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss} -%msg%n
            </Pattern>
        </layout>
    </appender>
    <!-- logger節(jié)點,可選節(jié)點,作用是指明具體的包或類的日志輸出級別,
    以及要使用的<appender>(可以把<appender>理解為一個日志模板)。
    addtivity:非必寫屬性,是否向上級loger傳遞打印信息。默認是true-->
    <logger name="com.framework.job" additivity="false">
        <appender-ref ref="console"/>
        <appender-ref ref="logFile"/>
    </logger>
    <!--項目的整體的日志打印級別為info-->
    <root level="info">
        <appender-ref ref="console"/>
        <appender-ref ref="logFile"/>
    </root>
</configuration>

日志級別單獨配置

application.yml使用以下方式,可以單獨設置每個包下的日志記錄級別,其中file屬性可有可無

logging:
  file: applog/sys.log
  level:
    com:
      leshangju:
        prism:
          auth:
            dao: debug
          usershop:
            dao: debug
          loginuser:
            dao: debug

application.properties

logging.level.com.framework.job : info

測試結果

@Slf4j
public class MyJob extends QuartzJobBean {
    @Override
    protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
        System.out.println("啟動定時任務 My Job:" + LocalDateTime.now());
        log.trace("進入了myjob任務");
        try {
            Thread.sleep(3000);
            log.trace("睡了3秒");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        log.info("結束任務!");
        System.out.println("end  My Job:" + LocalDateTime.now());
    }
}

控制臺:

在這里插入圖片描述

根目錄生成文件:

在這里插入圖片描述

slf4j,logback,log4j的區(qū)別

slf4j(Simple logging Facade for Java) 簡單日志門面,日志系統的實現進行了具體的抽象化,只提供了統一的日志使用接口,沒有任何日志實現,只有一個jar包(slf4j-api.jar)。

log4j和logback是具體的日志框架。這兩個日志框是同一個作者開發(fā),后者性能更高。

logbak直接實現slf4j接口,性能更高

springboot默認日子框架為logback

到此這篇關于SpringBoot使用slf4j日志并輸出到文件中的文章就介紹到這了,更多相關SpringBoot slf4j日志輸出到文件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • springboot整合vue項目(小試牛刀)

    springboot整合vue項目(小試牛刀)

    這篇文章主要介紹了springboot整合vue項目(小試牛刀),小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • 如何解決maven報錯:不知道這樣的主機問題

    如何解決maven報錯:不知道這樣的主機問題

    這篇文章主要介紹了如何解決maven報錯:不知道這樣的主機問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • SpringMvc微信支付回調示例代碼

    SpringMvc微信支付回調示例代碼

    微信一直是一個比較熱門的詞匯,今天這篇文章主要介紹的是SpringMvc微信支付回調的示例代碼,對大家開發(fā)微信支付具有一定的參考借鑒價值,下面來一起看看吧。
    2016-09-09
  • SpringCache使用案例詳解

    SpringCache使用案例詳解

    這篇文章主要介紹了SpringCache使用案例詳解,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-11-11
  • 幾種常見的Java運行時異常小結

    幾種常見的Java運行時異常小結

    在Java編程語言中異常處理是一項關鍵的機制,它幫助開發(fā)者識別和修復程序運行時可能出現的問題,下面這篇文章主要給大家介紹了幾種常見的Java運行時異常的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-08-08
  • 淺談Redis在微服務架構中的幾種應用場景

    淺談Redis在微服務架構中的幾種應用場景

    本文介紹在SpringCloud中使用Redis作為Pub/Sub異步通信、緩存或主數據庫和配置服務器的三種場景應用。小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • Spring Boot 中的靜態(tài)資源放置位置

    Spring Boot 中的靜態(tài)資源放置位置

    這篇文章主要介紹了Spring Boot 中的靜態(tài)資源到底要存放哪里,很多童鞋對這個問題很糾結,接下來通過本文給大家介紹下,需要的朋友可以參考下
    2019-04-04
  • Java處理字節(jié)類型數據的實現步驟

    Java處理字節(jié)類型數據的實現步驟

    字節(jié)(Byte)是計算機信息技術用于計量存儲容量的一種基本單位,通常簡寫為B,在ASCII編碼中1Byte可以表示一個標準的英文字符,包括大寫字母、小寫字母、數字、標點符號和控制字符等,本文給大家介紹了Java如何優(yōu)雅的處理字節(jié)類型數據,需要的朋友可以參考下
    2024-07-07
  • 攔截器獲取request的值之后,Controller拿不到值的解決

    攔截器獲取request的值之后,Controller拿不到值的解決

    這篇文章主要介紹了攔截器獲取request的值之后,Controller拿不到值的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Springboot?@Async多線程獲取返回值方式

    Springboot?@Async多線程獲取返回值方式

    這篇文章主要介紹了Springboot?@Async多線程獲取返回值方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09

最新評論