国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

學(xué)習(xí)SpringBoot使用slf4j日志并輸出到文件中

這篇具有很好參考價(jià)值的文章主要介紹了學(xué)習(xí)SpringBoot使用slf4j日志并輸出到文件中。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

slf4j日志(3月11日)

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

1、日志級(jí)別

  • SLF4J將日志分為trace、debug、info、warn、error五個(gè)級(jí)別,每個(gè)級(jí)別對(duì)應(yīng)記錄不同的日志,對(duì)應(yīng)不同的使用場(chǎng)景。

  • 日志級(jí)別從低到高分為

TRACE < DEBUG < INFO < WARN < ERROR < FATAL

如果設(shè)置為 WARN ,則低于 WARN 的信息都不會(huì)輸出

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


trace

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

public class Car{

//點(diǎn)火

public void fire(){

log.trace("fire")

...

}

debug

debug是比trace高一級(jí)別的日志,該級(jí)別的日志就是用來(lái)debug用的。這類(lèi)日志往往用在判斷是否有出現(xiàn)bug的場(chǎng)景,且往往記錄了代碼運(yùn)行的詳細(xì)信息,比如方法調(diào)用傳入的參數(shù)信息。

假設(shè)運(yùn)行的過(guò)程中出現(xiàn)了問(wèn)題,為了定位問(wèn)題的原因,可以使用debug級(jí)別的日志來(lái)記錄檔位,通過(guò)記錄運(yùn)行時(shí)傳入的gear來(lái)判斷是不是因?yàn)闄n位輸入錯(cuò)誤而導(dǎo)致Car起步失敗。

//掛檔

public void gear(int gear){

log.trace("gear")

//記錄檔位

log.debug(gear)

...

}

info

info比debug高一級(jí)別,用來(lái)記錄程序運(yùn)行的一些關(guān)鍵信息,它不像trace那樣記錄程序運(yùn)行的整個(gè)流程,也不像debug那樣為了解決問(wèn)題而記錄詳細(xì)的信息。

info記錄的是整個(gè)系統(tǒng)的運(yùn)行信息,比如系統(tǒng)運(yùn)行到了哪一個(gè)階段,到達(dá)了哪一個(gè)狀態(tài)。還是以車(chē)啟動(dòng)為例子,將啟動(dòng)的代碼修改如下。

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 !");

}

可以看到,運(yùn)行完looseBrake方法之后,使用info記錄了車(chē)的狀態(tài),車(chē)已經(jīng)完成了起步了,可以踩油門(mén)加速了。


warn

warn比info的級(jí)別更高,用來(lái)記錄一些警告信息。警告信息表示,程序進(jìn)入了一個(gè)特殊的狀態(tài),在該狀態(tài)下程序可以繼續(xù)運(yùn)行,但是不建議讓程序進(jìn)入該狀態(tài),因?yàn)樵摖顟B(tài)可能導(dǎo)致結(jié)果出現(xiàn)問(wèn)題

車(chē)啟動(dòng)的過(guò)程中如果以大于1檔起步,就使用warn記錄警告,告訴調(diào)用者不推薦這樣使用,實(shí)際上2檔起步也是可以的,但可能會(huì)出問(wèn)題

//掛檔

public void gear(int gear){

log.trace("gear")

//記錄檔位

log.debug(gear)

if(gear > 1){

log.warn("gear "+ gear +" is too high !")

}

...

}



error

error級(jí)別的日志是最高優(yōu)先級(jí)了,用來(lái)記錄運(yùn)行時(shí)的錯(cuò)誤信息,表示程序運(yùn)行過(guò)程中出現(xiàn)了需要被解決的問(wèn)題,往往是一些異常。使用error日志的時(shí)候,一般會(huì)將詳細(xì)的異常出現(xiàn)的原因記錄。

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 在所有內(nèi)部日志中使用Commons Logging,但是默認(rèn)配置也提供了對(duì)常用日志的支持,如:Java Util Logging,Log4J, Log4J2和Logback。每種Logger都可以通過(guò)配置使用控制臺(tái)或者文件輸出日志內(nèi)容。

SLF4J類(lèi)似于Commons Logging,也是一個(gè)日志接口,而Logback類(lèi)似于Log4j,是一個(gè)日志的實(shí)現(xiàn)。

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

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

默認(rèn)的命名規(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 這個(gè)包就自帶了 logging 的依賴包,SpringBoot會(huì)默認(rèn)使用logback作為日志框架,在生成springboot項(xiàng)目的時(shí)候可以直接勾選logback,那么就可以直接使用logback了。手動(dòng)添加的話,建議使用slf4j+logback,后面項(xiàng)目更容易維護(hù):

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




日志配置類(lèi)介紹

如下配置將:

  • 在根目錄applog中每天生成一個(gè)文件夾,并生成一個(gè)天級(jí)別的日志文件。

  • Logger標(biāo)簽:作為日志的記錄器,把它關(guān)聯(lián)到應(yīng)用的對(duì)應(yīng)的context上后,主要用于存放日志對(duì)象,也可以定義日志類(lèi)型、級(jí)別。

  • Appender主要用于指定日志輸出的目的地,目的地可以是控制臺(tái)、文件、遠(yuǎn)程套接字服務(wù)器、 MySQL、PostreSQL、 Oracle和其他數(shù)據(jù)庫(kù)、 JMS和遠(yuǎn)程UNIX Syslog守護(hù)-進(jìn)程等。

  • Layout 負(fù)責(zé)把事件轉(zhuǎn)換成字符串,格式化的日志信息的輸出

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

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <contextName>logback</contextName>

    <!--輸出到控制臺(tái)-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!--按天生成日志,即一天只生成一個(gè)文件夾和一個(gè)日志文件-->
    <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é)點(diǎn),可選節(jié)點(diǎn),作用是指明具體的包或類(lèi)的日志輸出級(jí)別,
    以及要使用的<appender>(可以把<appender>理解為一個(gè)日志模板)。
    addtivity:非必寫(xiě)屬性,是否向上級(jí)loger傳遞打印信息。默認(rèn)是true-->
    <logger name="com.framework.job" additivity="false">
        <appender-ref ref="console"/>
        <appender-ref ref="logFile"/>
    </logger>

    <!--項(xiàng)目的整體的日志打印級(jí)別為info-->
    <root level="info">
        <appender-ref ref="console"/>
        <appender-ref ref="logFile"/>
    </root>

</configuration>


日志級(jí)別單獨(dú)配置

application.yml使用以下方式,可以單獨(dú)設(shè)置每個(gè)包下的日志記錄級(jí)別,其中file屬性可有可無(wú)

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

測(cè)試結(jié)果
@Slf4j
public class MyJob extends QuartzJobBean {

    @Override
    protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
        System.out.println("啟動(dòng)定時(shí)任務(wù) My Job:" + LocalDateTime.now());
        log.trace("進(jìn)入了myjob任務(wù)");

        try {
            Thread.sleep(3000);
            log.trace("睡了3秒");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        log.info("結(jié)束任務(wù)!");
        System.out.println("end  My Job:" + LocalDateTime.now());

    }
}




控制臺(tái):

學(xué)習(xí)SpringBoot使用slf4j日志并輸出到文件中



根目錄生成文件:

學(xué)習(xí)SpringBoot使用slf4j日志并輸出到文件中



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

slf4j(Simple logging Facade for Java) 簡(jiǎn)單日志門(mén)面,日志系統(tǒng)的實(shí)現(xiàn)進(jìn)行了具體的抽象化,只提供了統(tǒng)一的日志使用接口,沒(méi)有任何日志實(shí)現(xiàn),只有一個(gè)jar包(slf4j-api.jar)。

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

logbak直接實(shí)現(xiàn)slf4j接口,性能更高

springboot默認(rèn)日子框架為logback文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-460137.html

到了這里,關(guān)于學(xué)習(xí)SpringBoot使用slf4j日志并輸出到文件中的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【SpringBoot中使用SLE4J日志框架啟動(dòng)報(bào)錯(cuò):SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinde】

    【SpringBoot中使用SLE4J日志框架啟動(dòng)報(bào)錯(cuò):SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinde】

    1.1 出現(xiàn)的問(wèn)題 SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”. SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 1.2 原因分析 檢查自己的maven依賴,發(fā)現(xiàn)已經(jīng)引入了slf4j-api了,這是為什么呢?其原因是,SLF4J本身

    2024年02月13日
    瀏覽(21)
  • SpringBoot集成slf4j日志系統(tǒng)

    SpringBoot集成slf4j日志系統(tǒng)

    作者平臺(tái): | CSDN:blog.csdn.net/qq_4115394… | 掘金:juejin.cn/user/651387… | 知乎:www.zhihu.com/people/1024… | GitHub:github.com/JiangXia-10… | 微信公眾號(hào):1024筆記 本文大約4777字,預(yù)計(jì)閱讀時(shí)長(zhǎng)11分鐘 日志系統(tǒng)作為一個(gè)應(yīng)用系統(tǒng)的重要部分之一,它能夠有助于我們?cè)谙到y(tǒng)在線上環(huán)境中如果

    2023年04月19日
    瀏覽(18)
  • 記錄一次@Slf4j log.info 日志信息未輸出到日志文件的問(wèn)題

    Spring Boot的起步依賴(如spring-boot-starter-web)中已經(jīng)包含了Slf4j的依賴,無(wú)需額外添加。: 當(dāng)你在項(xiàng)目中添加了 spring-boot-starter-web 依賴后,它將自動(dòng)引入以下關(guān)鍵組件和依賴項(xiàng): Spring MVC:用于構(gòu)建Web應(yīng)用程序的模型-視圖-控制器(Model-View-Controller)框架。 Tomcat(或其他嵌入式

    2024年02月06日
    瀏覽(29)
  • 6.2 SpringBoot日志入門(mén)實(shí)戰(zhàn) SLF4J + Logback

    6.2 SpringBoot日志入門(mén)實(shí)戰(zhàn) SLF4J + Logback

    如果你是一位Java開(kāi)發(fā)者,那么你肯定知道Log日志的重要性,它是我們了解程序內(nèi)部運(yùn)行真像,分析和定位問(wèn)題的最直接手段!對(duì)于任何企業(yè)級(jí)的程序,日志記錄是必須的! 在SpringBoot框架中,集成了常用的日志框架,包括SLF4J、Logback、Log4j2、Java Util Logging等,其中,Logback是

    2024年02月08日
    瀏覽(27)
  • SpringBoot集成slf4j日志和logback.xml配置詳解

    SpringBoot集成slf4j日志和logback.xml配置詳解

    slf4j,即(Simple Logging Facade for Java,簡(jiǎn)單門(mén)面日志)。它是對(duì)所有日志框架制定的一種 規(guī)范、標(biāo)準(zhǔn)、接口 ,并不是一個(gè)框架的具體的實(shí)現(xiàn),它只服務(wù)于各種各樣的日志系統(tǒng)。 slf4j提供了統(tǒng)一的記錄日志的接口,對(duì)不同日志系統(tǒng)的具體實(shí)現(xiàn)進(jìn)行了抽象化,只要按照其提供的方法記

    2024年02月03日
    瀏覽(42)
  • SLF4J日志框架在項(xiàng)目中使用

    SLF4J全稱“Simple Logging Facade for Java”,作為各種日志框架的簡(jiǎn)單門(mén)面。例如: java.util.logging、logback 、 reload4j等。只需要切換日志框架的jar包依賴就可以切換日志框架。 SLF4J支持的日志框架包含如下: log4j:常用的日志框架,需要有配置文件log4j.properties logback:可以通過(guò)logba

    2024年02月02日
    瀏覽(27)
  • 應(yīng)用中日志的優(yōu)雅使用(整合log4j2與SLF4J)

    應(yīng)用中不可直接使用日志系統(tǒng)( Log4j、 Logback) 中的 API,而應(yīng)依賴使用日志框架( SLF4J、 JCL–Jakarta Commons Logging) 中的 API,使用門(mén)面模式的日志框架,有利于維護(hù)和各個(gè)類(lèi)的日志處理方式統(tǒng)一。 日志框架( SLF4J、 JCL–Jakarta Commons Logging)的使用方式(推薦使用 SLF4J) 所有

    2023年04月09日
    瀏覽(28)
  • SLF4J門(mén)面日志框架源碼探索

    SLF4J門(mén)面日志框架源碼探索

    SLF4J即Simple Logging Facade for Java,它提供了Java中所有日志框架的簡(jiǎn)單外觀或抽象。因此,它使用戶能夠使用單個(gè)依賴項(xiàng)處理任何日志框架,例如:Log4j,Logback和JUL(java.util.logging)。通過(guò)在類(lèi)路徑中插入適當(dāng)?shù)?jar 文件(綁定),可以在部署時(shí)插入所需的日志框架。如果要更換日志

    2024年02月09日
    瀏覽(25)
  • SLF4J & Spring Boot日志框架

    SLF4J & Spring Boot日志框架

    JAVA有好多優(yōu)秀的日志框架,比如log4j、log4j2、logback、JUL(java.util.logging)、JCL(JAVA Common Logging)等等,logback是后起之秀,是Spring Boot默認(rèn)日志框架。 今天文章的目標(biāo)不是研究JAVA的這些日志框架,而是在應(yīng)用中處于他們前面的日志門(mén)面SLF4J,以及初步了解一下Spring Boot的默認(rèn)日

    2024年01月17日
    瀏覽(22)
  • Spring Boot 日志配置(Slf4j)

    Spring Boot 日志配置(Slf4j)

    SLF4J與Logback簡(jiǎn)介 Java日志框架眾多,常用的有java.util.logging, log4j, logback,commons-logging等。 SLF4J (Simple Logging Facade For Java),它是一個(gè)針對(duì)于各類(lèi)Java日志框架的統(tǒng)一Facade抽象。SLF4J定義了統(tǒng)一的日志抽象接口,而真正的日志實(shí)現(xiàn)則是在運(yùn)行時(shí)決定。 LogBack是由log4j的創(chuàng)始人開(kāi)發(fā)的新

    2024年02月16日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包