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

spring整合logBack日志框架:

這篇具有很好參考價(jià)值的文章主要介紹了spring整合logBack日志框架:。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1. SLF4J簡介

SLF4J(Simple Logging Facade for Java)是一種日志規(guī)范,類似于JDBC,我們常用的日志log4j、logback等都實(shí)現(xiàn)了這個(gè)規(guī)范,所以我們可以直接使用SLF4J的規(guī)范來使用日志。

spring整合logBack日志框架:,spring,spring,logback,java

2. logback和log4j

它們是同一個(gè)作者開發(fā)的,logback是重新編寫的內(nèi)核,在一些關(guān)鍵執(zhí)行的路徑上提升了10倍以上。它也支持了一些新的特性。

這兩者雖然作者相同,但log4j早已被托管給Apache基金會維護(hù),并且自從2012年5月之后就沒有更新了。而logback從出生開始就是其作者奔著取代log4j的目的開發(fā)的,因此一方面logback繼承了log4j大量的用法,使得學(xué)習(xí)和遷移的成本不高,另一方面logback在性能上要明顯優(yōu)于log4j,尤其是在大量并發(fā)的環(huán)境下,并且新增了一些log4j所沒有的功能(如將日志文件壓縮成zip包等)

思考一下

為什么要記錄日志?

  • 程序上線前:代碼編寫過程

    • 測試環(huán)節(jié)更快的找bug

    • 易于觀察程序的執(zhí)行順序和執(zhí)行流程

  • 程序上線之后:

    • 用來跟蹤定位程序的運(yùn)行狀態(tài)

    • 用來快速的定位bug

3. logback的使用

3.1 引入依賴

logback是遵循slf4j規(guī)范的,所以要先引入其依賴.其實(shí)logback內(nèi)部已經(jīng)關(guān)聯(lián)了slf4j的jar包,其實(shí)只需要依賴logback的依賴!

導(dǎo)入坐標(biāo):

<!--加入slf4j+logback-->
<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
  <version>1.2.3</version>
</dependency>

<dependency>
      <groupId>org.logback-extensions</groupId>
      <artifactId>logback-ext-spring</artifactId>
      <version>0.1.5</version>
 </dependency>

<dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.26</version>
    </dependency>

<!--SLF4J轉(zhuǎn)化包 可以打印spring框架的日志-->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>1.7.25</version>
</dependency>

如上所示是集成所需要的依賴,其中:

  • 第一個(gè)logback-classic包含了logback本身所需的slf4j-api.jar、logback-core.jar及l(fā)ogback-classsic.jar。

  • 第二個(gè)logback-ext-spring是由官方提供的對Spring的支持,它的作用就相當(dāng)于log4j中Log4jConfigListener;這個(gè)listener,網(wǎng)上大多都是用的自己實(shí)現(xiàn)的,原因在于這個(gè)插件似乎并沒有出現(xiàn)在官方文檔的顯要位置導(dǎo)致大多數(shù)人并不知道它的存在。

  • 第三個(gè)jcl-over-slf4j是用來把Spring源代碼中大量使用到的commons-logging替換成slf4j,只有在添加了這個(gè)依賴之后才能看到Spring框架本身打印的日志–即info文件中打印出的spring啟動日志信息,否則只能看到開發(fā)者自己打印的日志。

3.2 引入logback.xml日志配置文件

這里特別注意引入位置(maven工程)在src/main/resource這個(gè)根目錄下。

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">

<!--定義日志文件的存儲地址 logs為當(dāng)前項(xiàng)目的logs目錄 還可以設(shè)置為../logs -->
<property name="LOG_HOME" value="logs" />

<!--控制臺日志, 控制臺輸出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個(gè)字符寬度,%msg:日志消息,%n是換行符-->
 <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
    </encoder>
</appender>

<!--文件日志, 按照每天生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!--日志文件輸出的文件名-->
        <FileNamePattern>${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log</FileNamePattern>
        <!--日志文件保留天數(shù)-->
        <MaxHistory>30</MaxHistory>
    </rollingPolicy>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個(gè)字符寬度%msg:日志消息,%n是換行符-->
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
    </encoder>
    <!--日志文件最大的大小-->
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
        <MaxFileSize>10MB</MaxFileSize>
    </triggeringPolicy>
</appender>

<!-- show parameters for hibernate sql 專為 Hibernate 定制 -->
<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE" />
<logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="DEBUG" />
<logger name="org.hibernate.SQL" level="DEBUG" />
<logger name="org.hibernate.engine.QueryParameters" level="DEBUG" />
<logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG" />

<!--myibatis log configure-->
<logger name="com.apache.ibatis" level="TRACE"/>
<logger name="java.sql.Connection" level="DEBUG"/>
<logger name="java.sql.Statement" level="DEBUG"/>
<logger name="java.sql.PreparedStatement" level="DEBUG"/>

<!-- 日志輸出級別 -->
<root level="DEBUG">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="FILE"/>
</root>
  <!-- 指定項(xiàng)目中某個(gè)包,當(dāng)有日志操作行為時(shí)的日志記錄級別 -->
    <!-- com.framework為根包,也就是只要是發(fā)生在這個(gè)根包下面的所有日志操作行為的權(quán)限都是DEBUG -->
    <!-- 級別依次為【從高到低】:FATAL > ERROR > WARN > INFO > DEBUG > TRACE  -->
    <!--
    <logger name="com.framework" level="info">
        <appender-ref ref="demolog" />
    </logger>
     -->

</configuration>

4. logback.xml日志配置文件的配置邏輯:

1.先對日志的基本配置聲明:包括日志的輸出路徑— (日志路徑,這里是相對路徑,web項(xiàng)目idea下會輸出到idea 的安裝目錄下,如果部署到linux上的tomcat下,會輸出到tomcat/bin目錄 下 ) ,日志級別—(日志的輸出級別 由低到高(越高問題越嚴(yán)重)trace->debug->info->warn->error ),日志生成的文件名,日志文件大小等。
2.聲明不同appender來具體定義系統(tǒng)不同級別的信息匹配記錄,和生成文件的設(shè)置,只是定義,并沒有引入本應(yīng) 用就不會用到。
3.為某些特定的包加上上面定義好的appender。用來區(qū)別對待系統(tǒng)一般的日志輸出模式。
4.將定義好的appender添加到本應(yīng)用的日志系統(tǒng)中。類是定時(shí)任務(wù)中先聲明任務(wù),在把任務(wù)加入到調(diào)度里才算這個(gè)任務(wù)開始被使用了。

5. 理解正確的日志輸出級別

很多人都忽略了日志輸出級別, 甚至不知道如何指定日志的輸出級別. 相對于System.out來說, 日志框架有兩個(gè)最大的優(yōu)點(diǎn)就是可以指定輸出類別(category)和級別(level). 對于日志輸出級別來說, 下面是我們應(yīng)該記住的一些原則:

ERROR:

系統(tǒng)發(fā)生了嚴(yán)重的錯(cuò)誤, 必須馬上進(jìn)行處理, 否則系統(tǒng)將無法繼續(xù)運(yùn)行. 比如, NPE, 數(shù)據(jù)庫不可用等.

WARN:

系統(tǒng)能繼續(xù)運(yùn)行, 但是必須引起關(guān)注. 對于存在的問題一般可以分為兩類:

  • 系統(tǒng)存在明顯的問題(比如, 數(shù)據(jù)不可用),

  • 就是系統(tǒng)存在潛在的問題,需要引起注意或者給出一些建議

    • (比如, 系統(tǒng)運(yùn)行在安全模式或者訪問當(dāng)前系統(tǒng)的賬號存在安全隱患). 總之就是系統(tǒng)仍然可用,但是最好進(jìn)行檢查和調(diào)整.

INFO:

重要的業(yè)務(wù)邏輯處理完成. 在理想情況下, INFO的日志信息要能讓高級用戶和系統(tǒng)管理員理解, 并從日志信息中能知道系統(tǒng)當(dāng)前的運(yùn)行狀態(tài)。

比如對于一個(gè)機(jī)票預(yù)訂系統(tǒng)來說, 當(dāng)一個(gè)用戶完成一個(gè)機(jī)票預(yù)訂操作之后, 提醒應(yīng)該給出"誰預(yù)訂了從A到B的機(jī)票". 另一個(gè)需要輸出INFO信息的地方就是一個(gè)系統(tǒng)操作引起系統(tǒng)的狀態(tài)發(fā)生了重大變化(比如數(shù)據(jù)庫更新, 過多的系統(tǒng)請求).

DEBUG: 主要給開發(fā)人員看,

TRACE: 系統(tǒng)詳細(xì)信息, 主要給開發(fā)人員用, 一般來說, 如果是線上系統(tǒng)的話, 可以認(rèn)為是臨時(shí)輸出, 而且隨時(shí)可以通過開關(guān)將其關(guān)閉. 有時(shí)候我們很難將DEBUG和TRACE區(qū)分開, 一般情況下, 如果是一個(gè)已經(jīng)開發(fā)測試完成的系統(tǒng), 再往系統(tǒng)中添加日志輸出, 那么應(yīng)該設(shè)為TRACE級別.

測試應(yīng)用:

@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:applicationContext.xml"})
@WebAppConfiguration
public class UserControllerTest {

@Test
public void sys(){
    log.trace("trace測試{}","trace顯示");
    log.debug("debug測試{}","debug顯示");
    log.info("info測試{}","info顯示");
    log.warn("warn測試{}","warn顯示");
    log.error("error測試{}","error顯示");
}
}

6. 其他補(bǔ)充

如果需要查看mybatis的SQL信息,需要把級別改為debug。

有兩種方式:

1、把全局的日志級別設(shè)為info,然后把打印SQL相關(guān)的日志級別改為debug

<logger name="druid.sql" level="debug"/>  <!--指定數(shù)據(jù)庫-->
<logger name="com.xcj.batchdemo" level="debug"/><!--指定某個(gè)包下-->
 
<!-- 日志輸出級別 -->
<root level="info">
    <appender-ref ref="console"/>
    <appender-ref ref="fileInfoLog"/>
    <appender-ref ref="fileErrorLog"/>
</root>

2、將全局的日志級別設(shè)置為debug,然后將需要屏蔽的框架日志級別設(shè)置為info

<logger name="org.springframework" level="INFO" />
<logger name="org.hibernate" level="INFO" />
<logger name="org.apache.ibatis" level="INFO" />
<!-- 控制臺日志輸出級別 -->
<root level="debug">
    <appender-ref ref="console"/>
    <appender-ref ref="fileInfoLog"/>
    <appender-ref ref="fileErrorLog"/>
</root>

3、mybatis簡易常用配置直接顯示到控制臺:

<?xml version="1.0"?>
<configuration>
    <!--定義日志文件的存儲地址 logs為當(dāng)前項(xiàng)目的logs目錄 還可以設(shè)置為../logs -->
	<property name="LOG_HOME" value="logs" />
    <!-- ch.qos.logback.core.ConsoleAppender 控制臺輸出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <!-- 日志級別 -->
    <root>
        <level value="off" />
        <appender-ref ref="STDOUT" />
    </root>
    <logger name="cn" level="DEBUG"/>
</configuration>

如果文件地址放的正確還是提醒xml找不到? 可選擇下面的進(jìn)行填補(bǔ)

配置全局掃描xml

盡量的在pom的build標(biāo)簽中加入如下內(nèi)容,以掃描到logback.xml文件。文章來源地址http://www.zghlxwxcb.cn/news/detail-527603.html

<!--掃描全局xml-->
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>

到了這里,關(guān)于spring整合logBack日志框架:的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • SpringBoot整合logback日志

    SpringBoot整合logback日志

    與log4j相比: 實(shí)際上,這兩個(gè)日志框架都出自同一個(gè)開發(fā)者之手,Logback 相對于 Log4J 有更多的優(yōu)點(diǎn) (1)logback不僅性能提升了,初始化內(nèi)存加載也更小了。 (2)內(nèi)容更豐富的文檔 (3)更強(qiáng)大的過濾器 1、maven配置jar包 logback默認(rèn)就在spring-boot-starter-web包中,所以我們只要有spring-boo

    2024年02月06日
    瀏覽(34)
  • logback整合rabbitmq實(shí)現(xiàn)消息記錄日志

    logback.xml文件配置 yml文件配置 代碼配置rabbitmq信息 測試客戶端 此外,如果要對日志進(jìn)行鏈路標(biāo)記,可以是用MDC

    2024年02月05日
    瀏覽(21)
  • 【日志技術(shù)——Logback日志框架】

    1.引出 我們通常展示信息使用的是輸出語句,但它有弊端,只能在控制臺展示信息,不能靈活的指定日志輸出的位置(文件,數(shù)據(jù)庫),想加入或取消日志,需要修改源代碼 2.日志技術(shù) 可以將系統(tǒng)執(zhí)行的信息,方便的記錄到指定的位置(控制臺、文件中、數(shù)據(jù)庫中) 可以隨

    2024年02月09日
    瀏覽(58)
  • 【二十八】springboot整合logback實(shí)現(xiàn)日志管理

    【二十八】springboot整合logback實(shí)現(xiàn)日志管理

    ????????本章節(jié)是記錄logback在springboot項(xiàng)目中的簡單使用,本文將會演示如何通過logback將日志記錄到日志文件或輸出到控制臺等管理操作。將會從以下幾個(gè)方面進(jìn)行講解。最后實(shí)現(xiàn)將特定級別的特定日志保存到日志文件。 一、依賴 以上版本只是測試時(shí)使用,實(shí)際版本根據(jù)

    2024年02月20日
    瀏覽(30)
  • java的springboot框架中使用logback日志框架使用RabbitHandler注解為什么獲取不到消費(fèi)的traceId信息?

    當(dāng)使用 Logback 日志框架和 RabbitMQ 的 @RabbitHandler 注解時(shí),如果無法獲取消費(fèi)的 traceId 信息,可能是因?yàn)樵谔幚?RabbitMQ 消息時(shí),沒有正確地將 traceId 傳遞到日志中。 為了將 traceId 傳遞到日志中,你可以利用 MDC(Mapped Diagnostic Context)機(jī)制。MDC 是一個(gè)線程綁定的上下文容器,允許

    2024年02月09日
    瀏覽(33)
  • Logback是最好用的日志框架嗎?Logback快速入門

    日志技術(shù)可以將系統(tǒng)執(zhí)行的信息選擇性的記錄到指定的位置(控制臺、文件中、數(shù)據(jù)庫中)。隨時(shí)以開關(guān)的形式控制是否記錄日志,無需修改源代碼,就可以取消或者記錄信息。并且牛人或者第三方公司已經(jīng)做好的日志記錄實(shí)現(xiàn)代碼,開發(fā)者可以直接拿來使用。 常見的日志框架

    2024年02月07日
    瀏覽(21)
  • 日志框架 --- Logback

    日志框架 --- Logback

    Logback是一個(gè)用于Java應(yīng)用程序的日志框架,它由log4j框架的創(chuàng)始人Ceki Gülcü開發(fā)。logback是log4j框架的繼承者和改進(jìn)版,并提供了更好的性能、可擴(kuò)展性和靈活性。與Log4j相比,Logback提供了更快的速度和更低的內(nèi)存占用,這使得它成為大型企業(yè)級應(yīng)用程序的理想選擇。 Logback包括

    2024年02月08日
    瀏覽(26)
  • Logback日志框架配置使用

    一、簡述 Logback一個(gè)通用、快速而又靈活的Java日志框架。主要分為三個(gè)模塊組成 logback-core: 其他兩個(gè)模塊的基礎(chǔ)模塊 logback-classic: 由log4j的改良版本,完整實(shí)現(xiàn)了slf4j的API,所以可以很方便的更換成其他日志系統(tǒng)如log4j或者JDK14 Logging logback-access:訪問模塊和Servlet容器集成提

    2024年02月11日
    瀏覽(26)
  • logback日志框架基本知識

    logback日志框架基本知識

    本文來說下logback日志框架基本知識 Spring Boot已經(jīng)將logback做為默認(rèn)集成的日志框架,全面了解學(xué)習(xí)是必然了。曾經(jīng)log4j是流行的日志框架,現(xiàn)在已被它的繼任者logback替代,logback更快,更小,更靈活。當(dāng)然,如果你的項(xiàng)目中還在用System.out.println()來輸出內(nèi)容,那更是得行動起來

    2024年02月11日
    瀏覽(27)
  • Java日志框架JUL、Log4j、logback、log4j2使用

    Java日志框架JUL、Log4j、logback、log4j2使用

    隨著軟件系統(tǒng)的發(fā)展系統(tǒng)業(yè)務(wù)越來越多、邏輯越來越復(fù)雜、代碼量越來越多,伴隨著容易出現(xiàn)的bug也會越來越多,不論是開發(fā)測試階段還是生產(chǎn)階段都需要將這些錯(cuò)誤及時(shí)的捕捉記錄下來,方便解決這些問題,否則針對出現(xiàn)的異常無從下手;此時(shí)就需要一些日志框架來完成這

    2024年02月15日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包