最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mybatis日志配置方式(slf4j、log4j、log4j2)

 更新時(shí)間:2023年09月19日 11:08:30   作者:一個(gè)很懶的人  
這篇文章主要介紹了Mybatis日志配置方式(slf4j、log4j、log4j2),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

1. Mybatis日志

1.1 日志實(shí)現(xiàn)原理

Mybatis 通過(guò)使用內(nèi)置的日志工廠提供日志功能。

內(nèi)置日志工廠將會(huì)把日志工作委托給下面的實(shí)現(xiàn)之一:

  • SLF4J
  • Apache Commons Logging
  • Log4j2
  • Log4j
  • JDK logging

MyBatis 內(nèi)置日志工廠會(huì)基于運(yùn)行時(shí)檢測(cè)信息選擇日志委托實(shí)現(xiàn)。它會(huì)(按上面羅列的順序)使用第一個(gè)查找到的實(shí)現(xiàn)。當(dāng)沒(méi)有找到這些實(shí)現(xiàn)時(shí),將會(huì)禁用日志功能。

1.2 日志實(shí)現(xiàn)方式

不少應(yīng)用服務(wù)器(如 Tomcat 和 WebShpere)的類(lèi)路徑中已經(jīng)包含 Commons Logging。

注意,在這種配置環(huán)境下,MyBatis 會(huì)把 Commons Logging 作為日志工具。

這就意味著在諸如 WebSphere 的環(huán)境中,由于提供了 Commons Logging 的私有實(shí)現(xiàn),你的 Log4J 配置將被忽略。

這個(gè)時(shí)候你就會(huì)感覺(jué)很郁悶:看起來(lái) MyBatis 將你的 Log4J 配置忽略掉了(其實(shí)是因?yàn)樵谶@種配置環(huán)境下,MyBatis 使用了 Commons Logging 作為日志實(shí)現(xiàn))。

如果你的應(yīng)用部署在一個(gè)類(lèi)路徑已經(jīng)包含 Commons Logging 的環(huán)境中,而你又想使用其它日志實(shí)現(xiàn),你可以通過(guò)在 MyBatis 配置文件 mybatis-config.xml 里面添加一項(xiàng) setting 來(lái)選擇其它日志實(shí)現(xiàn)。

setting配置日志的有效取值

可選的值有: SLF4J、LOG4J、LOG4J2、JDK_LOGGING、COMMONS_LOGGING、STDOUT_LOGGING、NO_LOGGING,或者是實(shí)現(xiàn)了 org.apache.ibatis.logging.Log 接口,且構(gòu)造方法以字符串為參數(shù)的類(lèi)完全限定名。

示例:

-

僅當(dāng)運(yùn)行時(shí)類(lèi)路徑中存在該日志實(shí)現(xiàn)時(shí),日志實(shí)現(xiàn)的切換才會(huì)生效。

如果你的環(huán)境中并不存在 Log4J,你卻試圖調(diào)用了相應(yīng)的方法,MyBatis 就會(huì)忽略這一切換請(qǐng)求,并將以默認(rèn)的查找順序決定使用的日志實(shí)現(xiàn)。

2. SLF4J

SLF4J其實(shí)只是一個(gè)門(mén)面服務(wù)而已,他并不是真正的日志框架,真正的日志的輸出相關(guān)的實(shí)現(xiàn)還是要依賴(lài)Log4j、logback等日志框架的。

簡(jiǎn)單日志門(mén)面(simple logging Facade for java),slf4j并不是一個(gè)完整的日志框架,他只是為各種日志框架提供統(tǒng)一的API接口,及根據(jù)slf4j提供的接口規(guī)則使用Logger,而在部署的時(shí)候根據(jù)自己的需求配置自己希望使用的日志系統(tǒng)??梢哉f(shuō)他是將各個(gè)日志系統(tǒng)接口進(jìn)行了抽象,抽象為統(tǒng)一的slf4j接口,這樣只要項(xiàng)目中使用slf4j API,我們可以隨時(shí)更換日志實(shí)現(xiàn),而不用更改代碼。

2.1 slf4j日志級(jí)別

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

  • trace: trace是最低優(yōu)先級(jí)的日志,一般用來(lái)追蹤詳細(xì)的程序運(yùn)行流,比如程序的運(yùn)行過(guò)程中,運(yùn)行到了哪一個(gè)方法,進(jìn)入了哪一條分支。通過(guò)trace程序的運(yùn)行流程,可以判斷程序是否按照期望的邏輯在運(yùn)行。
  • debug: debug是比trace高一級(jí)別的日志,該級(jí)別的日志就是用來(lái)debug用的。這類(lèi)日志往往用在判斷是否有出現(xiàn)bug的場(chǎng)景,且往往記錄了代碼運(yùn)行的詳細(xì)信息,比如方法調(diào)用傳入的參數(shù)信息。
  • info: info比debug高一級(jí)別,用來(lái)記錄程序運(yùn)行的一些關(guān)鍵信息,比如系統(tǒng)運(yùn)行到了哪一個(gè)階段,到達(dá)了哪一個(gè)狀態(tài)。
  • 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)題。
  • 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)的原因記錄

2.2 日志門(mén)面與日志實(shí)現(xiàn)

(1)日志門(mén)面

日志門(mén)面為日志系統(tǒng)也提供一套接口規(guī)范,日志系統(tǒng)通過(guò)這套日志門(mén)面進(jìn)行開(kāi)發(fā)避免了直接依賴(lài)具體的日志框架。

(2)日志實(shí)面

具體日志功能的實(shí)現(xiàn)框架

(3)關(guān)系

日志系統(tǒng)一般分為,日志門(mén)面和日志實(shí)面(實(shí)現(xiàn));在使用了日志門(mén)面后,更改日志框架的時(shí)候就不需要修改底層代碼;

  • 日志門(mén)面與日志實(shí)現(xiàn)是接口與實(shí)現(xiàn)類(lèi)的關(guān)系;
  • 日志門(mén)面可以理解為java中的一個(gè)interface(接口),而日志實(shí)面就是就是實(shí)現(xiàn)類(lèi)。
  • 日志實(shí)面即為日志實(shí)現(xiàn),實(shí)現(xiàn)了日志門(mén)面中所規(guī)定的日志系統(tǒng)所需實(shí)現(xiàn)的功能,也就是說(shuō)日志實(shí)面是日志門(mén)面中接口的實(shí)現(xiàn)類(lèi)。

(4)優(yōu)點(diǎn)

  • 面向接口開(kāi)發(fā),不再依賴(lài)具體的實(shí)現(xiàn)類(lèi)。減少代碼的耦合。
  • 項(xiàng)目通過(guò)導(dǎo)入不同的日志實(shí)現(xiàn)類(lèi),可以靈活的切換日志框架
  • 統(tǒng)一API,方便開(kāi)發(fā)者學(xué)習(xí)和使用
  • 統(tǒng)一配置便于項(xiàng)目日志的管理

2.3 日志門(mén)面與日志依賴(lài)配置

mybatis日志設(shè)置

<settings>
        <setting name="logImpl" value="SLF4J"/>
    </settings>

(1)slf4j + log4j

<!-- slf4j日志門(mén)面 -->
		<dependency>
		    <groupId>org.slf4j</groupId>
		    <artifactId>slf4j-api</artifactId>
		    <version>1.7.25</version>
		</dependency>
		<!-- 引入slf4j對(duì)應(yīng)log4j的橋接器 -->
		<dependency>
		    <groupId>org.slf4j</groupId>
		    <artifactId>slf4j-log4j12</artifactId>
		    <version>1.7.25</version>
		</dependency>
		<!-- log4j日志實(shí)面(日志實(shí)現(xiàn)框架) -->
		<dependency>
		    <groupId>log4j</groupId>
		    <artifactId>log4j</artifactId>
		    <version>1.2.17</version>
		</dependency>

(2)slf4j + log4j2

<!-- slf4j日志門(mén)面 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.25</version>
        </dependency>
		<!-- 引入slf4j對(duì)應(yīng)log4j2的橋接器 -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
            <scope>runtime</scope>
            <version>2.11.0</version>
        </dependency>
        <!-- log4j2日志實(shí)面(日志實(shí)現(xiàn)框架) -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <scope>runtime</scope>
            <version>2.11.0</version>
        </dependency>

3. LOG4J

Log4j 是 Apache 的一個(gè)開(kāi)放源代碼項(xiàng)目,通過(guò)使用 Log4j,我們可以控制日志信息輸送的目的地是控制臺(tái)、文件、GUI 組件、甚至是套接口服務(wù) 器、NT 的事件記錄器、UNIX Syslog 守護(hù)進(jìn)程等;我們也可以控制每一條日志的輸出格式;通過(guò)定義每一條日志信息的級(jí)別,我們能夠更加細(xì)致地控制日志的生成過(guò)程。

最令人感興趣的就 是,這些可以通過(guò)一個(gè)配置文件來(lái)靈活地進(jìn)行配置,而不需要修改應(yīng)用的代碼。

3.1 日志級(jí)別

每個(gè)Logger都被了一個(gè)日志級(jí)別(log level),用來(lái)控制日志信息的輸出。

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

  • fatal 指出每個(gè)嚴(yán)重的錯(cuò)誤事件將會(huì)導(dǎo)致應(yīng)用程序的退出。
  • error 指出雖然發(fā)生錯(cuò)誤事件,但仍然不影響系統(tǒng)的繼續(xù)運(yùn)行。
  • warn 表明會(huì)出現(xiàn)潛在的錯(cuò)誤情形。
  • info 一般和在粗粒度級(jí)別上,強(qiáng)調(diào)應(yīng)用程序的運(yùn)行全程。
  • debug 一般用于細(xì)粒度級(jí)別上,對(duì)調(diào)試應(yīng)用程序非常有幫助。
  • trace 是程序追蹤,可以用于輸出程序運(yùn)行中的變量,顯示執(zhí)行的流程。

還有兩個(gè)特殊的級(jí)別:

  • OFF,可用來(lái)關(guān)閉日志記錄。
  • ALL,啟用所有消息的日志記錄。

3.2 log4j重要組件

log4j從功能實(shí)現(xiàn)來(lái)說(shuō),主要由三大組件組成:Logger、Appender、Layout。(對(duì)應(yīng)關(guān)系如下:)

  • Logger是日志記錄器(也可以說(shuō)是日志級(jí)別)
  • Appender是日志輸出目的地
  • Layout是日志輸出格式控制器

一個(gè)日志記錄器可以對(duì)應(yīng)多個(gè)輸出目的地,每個(gè)輸出目的地有特定的輸出格式。

(1)Logger

日志記錄器,指定輸出日志的級(jí)別,并且可以配置輸出日志的指定空間

log4j.prpperties配置

#   自定義logger(指定要輸出日志的全限定路徑、日志級(jí)別、選擇的appender)
log4j.logger.com.qf.dao=debug,CONSOLE

log4j.xml配置

<!--    自定義logger,additivity 日志是否在父Logger中輸出(即root中))-->
<!-- 自定義logger(指定要輸出日志的全限定路徑、日志級(jí)別、選擇的appender)-->
    <logger name="com.qfedu.dao" additivity="false">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="LOGFILE"/>
    </logger>

(2)Appender

log4j將日志輸出源稱(chēng)為Appender,每個(gè)輸出源一個(gè)Appender,一個(gè)logger可以對(duì)應(yīng)多個(gè)Appender。

常見(jiàn)Appender

  • org.apache.log4j.ConsoleAppender:控制臺(tái)輸出
  • org.apache.log4j.FileAppender:輸出到文件
  • org.apache.log4j.DailyRollingFileAppender:每天產(chǎn)生日志輸出到文件
  • org.apache.log4j.RollingFileAppender:文件達(dá)到指定大小產(chǎn)生新文件
  • org.apache.log4j.WriterAppender:以流格式發(fā)送到指定位置
  • org.apache.log4j.jdbc.JDBCAppender:輸出到數(shù)據(jù)庫(kù)

log4j.prpperties配置

# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c:%L] [%p] - %m%n

log4j.xml配置

<!--    日志控制臺(tái)輸出配置-->
	<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c:%L] [%p] - %m%n"/>
        </layout>
    </appender>

(3)Layout

每個(gè)Appender可以指定特定的輸出格式,log4j將輸出格式稱(chēng)為L(zhǎng)ayout。

常見(jiàn)Layout

  • org.apache.log4j.HTMLLayout:HTML格式Layout
  • org.apache.log4j.PatternLayout:自定義格式Layout(常用)
  • org.apache.log4j.SimpleLayout:包含日志信息級(jí)別及信息
  • org.apache.log4j.TTCCLayout:包含生產(chǎn)時(shí)間、類(lèi)別、級(jí)別等

常用PatternLayout

  • %m 輸出代碼中指定的消息
  • %p 輸出優(yōu)先級(jí),即DEBUG,INFO,WARN,ERROR,F(xiàn)ATAL
  • %r 輸出自應(yīng)用啟動(dòng)到輸出該log信息耗費(fèi)的毫秒數(shù)
  • %c 輸出所屬的類(lèi)目,通常就是所在類(lèi)的全名
  • %t 輸出產(chǎn)生該日志事件的線(xiàn)程名
  • %n 輸出一個(gè)回車(chē)換行符,Windows平臺(tái)為“\r\n”,Unix平臺(tái)為“\n”
  • %-x 左對(duì)其信息

3.3 mybatis日志配置log4j

mybatis配置log4j有以下兩種配置方式,主要區(qū)別為是否使用日志門(mén)面

(1)(日志門(mén)面+日志實(shí)面):slf4j + log4j

步驟1:mybatis日志設(shè)置

<settings>
        <setting name="logImpl" value="SLF4J"/>
    </settings>

步驟2:導(dǎo)入相關(guān)依賴(lài)

<!-- slf4j日志門(mén)面 -->
		<dependency>
		    <groupId>org.slf4j</groupId>
		    <artifactId>slf4j-api</artifactId>
		    <version>1.7.25</version>
		</dependency>
		<!-- 引入slf4j對(duì)應(yīng)log4j的橋接器 -->
		<dependency>
		    <groupId>org.slf4j</groupId>
		    <artifactId>slf4j-log4j12</artifactId>
		    <version>1.7.25</version>
		</dependency>
		<!-- log4j日志實(shí)面(日志實(shí)現(xiàn)框架) -->
		<dependency>
		    <groupId>log4j</groupId>
		    <artifactId>log4j</artifactId>
		    <version>1.2.17</version>
		</dependency>

步驟3:編寫(xiě)配置文件

log4j基于自動(dòng)配置,所以配置文件名稱(chēng)只能為: log4j.properties log4j.xml

以下示例僅展示文件輸出與控制臺(tái)輸出配置

配置1:log4j.properties

# Set root category priority to INFO and its only appender to CONSOLE.
log4j.rootLogger=debug, CONSOLE, LOGFILE
# 表示自定義的logger不會(huì)繼承父Logger的appender輸出,默認(rèn)為true及輸出
lo4j.log4j.additivity.org.apache=false  
# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c:%L] [%p] - %m%n
# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d:\mybatis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c:%L] [%p] - %m%n
#   自定義logger(指定要輸出日志的全限定路徑、日志級(jí)別、選擇的appender)
log4j.logger.com.qf.dao=debug,CONSOLE

配置2:log4j.xml

自定義logger(指定要輸出日志的全限定路徑、日志級(jí)別、選擇的appender),可以選擇多個(gè)appender

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<log4j:configuration debug="true">
<!--    日志控制臺(tái)輸出配置-->
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c:%L] [%p] - %m%n"/>
        </layout>
    </appender>
    <!-- 日志文件輸出配置-->
    <appender name="LOGFILE" class="org.apache.log4j.FileAppender">
        <param name="File" value="d:\mybatis.log"/>
        <param name="Append" value="true"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c:%L] [%p] - %m%n"/>
        </layout>
    </appender>
<!--    自定義logger,additivity 日志是否在父Logger中輸出(即root中))-->
<!-- 自定義logger(指定要輸出日志的全限定路徑、日志級(jí)別、選擇的appender)-->
    <logger name="com.qfedu.dao" additivity="false">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="LOGFILE"/>
    </logger>
<!--    根logger-->
    <root>
        <level value="debug "/>
        <appender-ref ref="CONSOLE"/>
    </root>
</log4j:configuration>

(2)(不使用日志門(mén)面–不推薦): log4j

步驟1:mybatis日志設(shè)置

<settings>
        <setting name="logImpl" value="LOG4J"/>
    </settings>

步驟2:導(dǎo)入相關(guān)依賴(lài)

<dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.16</version>
    </dependency>

步驟3:編寫(xiě)配置文件

  • log4j基于自動(dòng)配置,所以配置文件名稱(chēng)只能為:log4j.propertieslog4j.xml
  • 以下示例僅展示文件輸出與控制臺(tái)輸出配置
  • 參考上述方式一示例

3. LOG4J2

Apache Log4j2 是對(duì)Log4j 的升級(jí):(Log4j2已經(jīng)不僅僅是Log4j的一個(gè)升級(jí)版本了,而是從頭到尾被重寫(xiě)的,這可以認(rèn)為這其實(shí)就是完全不同的兩個(gè)框架。)

  • 異常處理,在logback中,Appender中的異常不會(huì)被應(yīng)用感知到,但是在log4j2中,提供了一些異常處理機(jī)制。
  • 性能提升,log4j2 相較于log4j 和 logback 都具有明顯的性能提升,有18倍性能提升。
  • 自動(dòng)重載配置,參考了logback的設(shè)計(jì),當(dāng)然會(huì)提供自動(dòng)刷新參數(shù)配置,最實(shí)用的就是我們?cè)谏a(chǎn)上可以動(dòng)態(tài)的修改日志的級(jí)別而不需要重啟應(yīng)用。
  • 無(wú)垃圾機(jī)制,log4j2 在大部分情況下,都可以使用其設(shè)計(jì)的一套無(wú)垃圾機(jī)制【對(duì)象重用、內(nèi)存緩沖】,避免頻繁的日志收集導(dǎo)致的 jvm gc。

3.1 mybatis配置log4j2

mybatis配置log4j2有以下兩種配置方式,主要區(qū)別為使用哪一個(gè)日志門(mén)面,一般情況下,由于log4j功能過(guò)于強(qiáng)大,所以 slf4j + log4j2 會(huì)是后續(xù)流行的搭配!

(1)log4j2(日志+門(mén)面)

步驟1:配置mybatis文件

<settings>
        <setting name="logImpl" value="LOG4J2"/>
    </settings>

步驟2:導(dǎo)入相關(guān)依賴(lài)

<!--	log4j2日志門(mén)面-->
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
      <version>2.11.2</version>
    </dependency>
<!--	log4j2日志實(shí)面(日志實(shí)現(xiàn))-->
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <version>2.11.2</version>
    </dependency>

步驟3:編寫(xiě)log4j2配置文件

—— 見(jiàn)下文

(2)slf4j + log4j2

步驟1:配置mybatis文件

<settings>
        <setting name="logImpl" value="SLF4J"/>
    </settings>

步驟2:導(dǎo)入相關(guān)依賴(lài)

<!-- slf4j日志門(mén)面 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.25</version>
        </dependency>
		<!-- 引入slf4j對(duì)應(yīng)log4j2的橋接器 -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
            <scope>runtime</scope>
            <version>2.11.0</version>
        </dependency>
        <!-- log4j2日志實(shí)面(日志實(shí)現(xiàn)框架) -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <scope>runtime</scope>
            <version>2.11.0</version>
        </dependency>

步驟3:編寫(xiě)log4j2配置文件

—— 見(jiàn)下文

3.2 log4j2配置文件

(1)配置文件格式

注意配置文件命名格式

(2)配置文件內(nèi)容(只展示控制臺(tái)輸出和文件輸出)

log4j2從和log4j的組件含義大致相同,只是Appender組件子組件名稱(chēng)不同,功能實(shí)現(xiàn)來(lái)說(shuō),主要由三大組件組成:Logger、Appender、Layout。(對(duì)應(yīng)關(guān)系如下:)

  • Logger是日志記錄器(也可以說(shuō)是日志級(jí)別)
  • Appender是日志輸出目的地
  • Layout是日志輸出格式控制器

一個(gè)日志記錄器可以對(duì)應(yīng)多個(gè)輸出目的地,每個(gè)輸出目的地有特定的輸出格式。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Appenders>
<!--        日志輸出到控制臺(tái)-->
        <Console name="CONSOLE" target="SYSTEM_OUT">
            <PatternLayout pattern="[%t] %-5level %logger{36} - %msg%n"/>
        </Console>
<!--        日志輸出到文件-->
        <File name="LOGFILE" fileName="d:\mybatis.log" append="true">
            <PatternLayout pattern="[%t] %-5level %logger{36} - %msg%n"/>
        </File>
    </Appenders>
    <Loggers>
<!--        自定義日志記錄器-->
        <Logger name="com.j2205.wangwenfei.mapper" level="trace" additivity="false">
            <AppenderRef ref="CONSOLE"/>
            <AppenderRef ref="LOGFILE"/>
        </Logger>
<!--        根日志記錄器-->
        <Root level="error" >
            <AppenderRef ref="CONSOLE"/>
        </Root>
    </Loggers>
</Configuration>

(3)log4j2 配置文件含義

Loggers 指定logger,logger與appeder進(jìn)行關(guān)聯(lián),將logger中的日志輸出到appender,由appender實(shí)現(xiàn)日志的控制臺(tái)輸出或者文件記錄。

  • Root 用來(lái)指定項(xiàng)目的根日志,如果沒(méi)有單獨(dú)指定Logger,那么就會(huì)默認(rèn)使用該Root日志輸出
  • level 日志輸出級(jí)別,共有8個(gè)級(jí)別,按照從低到高為:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.
  • AppenderRef用來(lái)指定該日志輸出到哪個(gè)Appender.(可以配置多項(xiàng))。

Logger 自定義的子日志

  • level 日志輸出級(jí)別,共有8個(gè)級(jí)別,按照從低到高為:All < Trace < Debug < Info < Warn < Error < Fatal < OFF。
  • name 用來(lái)指定該Logger所適用的類(lèi)或者類(lèi)所在的包全路徑,繼承自Root節(jié)點(diǎn)。
  • additivity 日志是否在父Logger中輸出。
  • AppenderRef用來(lái)指定該日志輸出到哪個(gè)Appender,如果沒(méi)有指定,就會(huì)默認(rèn)繼承自Root.如果指定了,那么會(huì)在指定的這個(gè)Appender和Root的Appender中都會(huì)輸出,此時(shí)我們可以設(shè)置Logger的additivity="false"只在自定義的Appender中進(jìn)行輸出。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring注解驅(qū)動(dòng)之BeanPostProcessor后置處理器講解

    Spring注解驅(qū)動(dòng)之BeanPostProcessor后置處理器講解

    這篇文章主要介紹了Spring注解驅(qū)動(dòng)之BeanPostProcessor后置處理器講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 深入分析Spring BeanDefinition的構(gòu)造元信息

    深入分析Spring BeanDefinition的構(gòu)造元信息

    Bean Definition是一個(gè)包含Bean元數(shù)據(jù)的對(duì)象,它描述了如何創(chuàng)建Bean實(shí)例、Bean屬性的值以及Bean之間的依賴(lài)關(guān)系,本文將帶大家深入分析Spring BeanDefinition的構(gòu)造元信息,需要的朋友可以參考下
    2024-01-01
  • JAVA判斷兩個(gè)時(shí)間之間的差

    JAVA判斷兩個(gè)時(shí)間之間的差

    經(jīng)常會(huì)遇到需要判斷兩個(gè)時(shí)間之間的差異的情況,本文主要介紹了JAVA計(jì)算兩個(gè)時(shí)間之間的差,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • Maven本地jar引用的實(shí)現(xiàn)方法

    Maven本地jar引用的實(shí)現(xiàn)方法

    這篇文章主要介紹了Maven本地jar引用的實(shí)現(xiàn)方法的相關(guān)資料,希望通過(guò)本文能幫助到大家,實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-10-10
  • Java中BigDecimal的基本運(yùn)算(詳解)

    Java中BigDecimal的基本運(yùn)算(詳解)

    下面小編就為大家?guī)?lái)一篇Java中BigDecimal的基本運(yùn)算(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • JAVA使用HtmlUnit爬蟲(chóng)工具模擬登陸CSDN案例

    JAVA使用HtmlUnit爬蟲(chóng)工具模擬登陸CSDN案例

    今天小編就為大家分享一篇關(guān)于JAVA使用HtmlUnit爬蟲(chóng)工具模擬登陸CSDN案例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • maven多模塊項(xiàng)目單獨(dú)打包指定模塊jar包方式

    maven多模塊項(xiàng)目單獨(dú)打包指定模塊jar包方式

    這篇文章主要介紹了maven多模塊項(xiàng)目單獨(dú)打包指定模塊jar包方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-09-09
  • Spring線(xiàn)程池ThreadPoolTaskExecutor配置詳情

    Spring線(xiàn)程池ThreadPoolTaskExecutor配置詳情

    本篇文章主要介紹了Spring線(xiàn)程池ThreadPoolTaskExecutor配置詳情,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • 美化java代碼,從合理注釋開(kāi)始

    美化java代碼,從合理注釋開(kāi)始

    在Java的編寫(xiě)過(guò)程中我們需要對(duì)一些程序進(jìn)行注釋?zhuān)俗约悍奖汩喿x,更為別人更好理解自己的程序,可以是編程思路或者是程序的作用,總而言之就是方便自己他人更好的閱讀。下面我們來(lái)一起學(xué)習(xí)一下吧
    2019-06-06
  • Mybatis-Plus使用p6spy對(duì)SQL性能進(jìn)行監(jiān)控的方法

    Mybatis-Plus使用p6spy對(duì)SQL性能進(jìn)行監(jiān)控的方法

    這篇文章主要介紹了Mybatis-Plus使用p6spy對(duì)SQL性能進(jìn)行監(jiān)控的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評(píng)論

扶余县| 嘉兴市| 徐汇区| 涿鹿县| 福清市| 万安县| 双城市| 岑溪市| 信阳市| 黎川县| 区。| 福清市| 托克逊县| 元朗区| 布拖县| 万载县| 仲巴县| 石家庄市| 昌都县| 光山县| 繁昌县| 莒南县| 旬阳县| 崇明县| 德阳市| 阳朔县| 中阳县| 大悟县| 秀山| 合江县| 新泰市| 常州市| 休宁县| 美姑县| 浦东新区| 富锦市| 视频| 玛曲县| 万州区| 通河县| 蓬莱市|