亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原(yuan)創

logback配置文件XML詳解

2023-06-15 03:08:10
30
0

Logback 是一個基于 Java 的日志(zhi)框(kuang)(kuang)架(jia),被廣泛應用于 Java 應用程序中。它是 Log4j 框(kuang)(kuang)架(jia)的改進版,提供了高度可配置的日志(zhi)記(ji)錄(lu)功(gong)能(neng),具有靈活(huo)性和性能(neng)優(you)勢(shi)

Logback 包含(han)了三個主(zhu)要(yao)的組件:Logger、Appender 和(he) Layout。Logger 用(yong)于創建日志記(ji)錄器,Appender 用(yong)于定義日志輸出的目(mu)標,而 Layout 則定義了日志的格式(shi)。

以下是 Logback 的(de)一(yi)些主要特點(dian):

  1. 高度可配置(zhi):Logback 允許(xu)通過 XML 配置(zhi)文件或者編程方(fang)式進(jin)行靈(ling)活的(de)(de)配置(zhi)。你可以定義日(ri)志輸(shu)出的(de)(de)級(ji)別、輸(shu)出目標、格式等等。

  2. 繼承 Log4j:Logback 被設計為 Log4j 的直(zhi)接替代(dai)品,可(ke)以無縫遷移(yi)現(xian)有(you)的 Log4j 配置(zhi)文件到(dao) Logback。

  3. 低(di)開銷:Logback 在(zai)設計上盡量減少對(dui)系(xi)統(tong)性(xing)能的(de)影響,具有高(gao)效(xiao)的(de)異步日志記(ji)錄機(ji)制(zhi)和線程安(an)全性(xing)。

  4. 支持多(duo)種(zhong)輸出:Logback 提(ti)供了多(duo)種(zhong) Appender,包(bao)括 ConsoleAppender、FileAppender、SocketAppender 等,可以將日志輸出到控制臺、文件、網絡等不同(tong)目標。

  5. 靈活的過(guo)濾(lv)(lv)器:Logback 允許通過(guo)過(guo)濾(lv)(lv)器機制對日志(zhi)(zhi)進(jin)行過(guo)濾(lv)(lv)和(he)處理,你可以根據日志(zhi)(zhi)級別、關鍵字等條件(jian)來過(guo)濾(lv)(lv)日志(zhi)(zhi)記錄(lu)。

  6. SLF4J 兼容(rong):Logback 與 SLF4J(Simple Logging Facade for Java)框(kuang)架無縫集成,SLF4J 提(ti)供了一(yi)個統(tong)一(yi)的日志門面,使(shi)得(de)應用程序(xu)可以方便(bian)地切換日志框(kuang)架而不需要修(xiu)改(gai)代碼。

下(xia)面(mian)是(shi)logba.xml配置文件引入java后臺的流(liu)程和配置詳解(jie):

1查找默認配置文件

logback默(mo)認(ren)會查找以下文件(jian)

logback-test.xml

logback.groovy

logback.xml

2 配置節點

2.1 根節點<configuration>

根節點包含以下屬性

  • scan: 當此屬性設置為true時,配置文件如果發生改變,將會被重新加載,默認值為true。
  • scanPeriod: 設置監測配置文件是否有修改的時間間隔,如果沒有給出時間單位,默認單位是毫秒。當scan為true時,此屬性生效。默認的時間間隔為1分鐘。
  • debug: 當此屬性設置為true時,將打印出logback內部日志信息,實時查看logback運行狀態。默認值為false。
<?xml version="1.0" encoding="UTF-8"?>
<!--        scan : 當此屬性設置為true時,配置文件如果發生改變,將會被重新加載,默認值為true-->
<configuration scan="false" scanPeriod="60 seconds" debug="false">
</configuration>

 2.2 子節點<appender>

負(fu)責寫日志的組件,它有兩個必(bi)要屬(shu)性name和class。name指(zhi)定appender名稱,class指(zhi)定appender的全(quan)限定名。

appender實現類有以下幾種。

1. ConsoleAppender 日志輸出到控制臺

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>stdout %d %p - %m%n</pattern>
    </encoder>
</appender>

2. FileAppender 日志添加(jia)到(dao)文(wen)件(jian)(靜態(tai)文(wen)件(jian))

  • <file>:被寫入的文件名,可以是相對目錄,也可以是絕對目錄,如果上級目錄不存在會自動創建,沒有默認值。
  • <append>:如果是 true,日志被追加到文件結尾,如果是 false,清空現存文件,默認是true。
  • <encoder>:對記錄事件進行格式化。(具體參數稍后講解 )
  • <prudent>:如果是 true,日志會被安全的寫入文件,即使其他的FileAppender也在向此文件做寫入操作,效率低,默認是 false。
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
  <file>testFile.log</file>
  <append>true</append>
  <encoder>
     <pattern>%d %p - %m%n</pattern>
  </encoder>
</appender>

3. RollingFileAppender(動態文件)

RollingFileAppender滾動記錄(lu)文(wen)件(jian)(jian),先將日志(zhi)記錄(lu)到指定文(wen)件(jian)(jian),當符(fu)合某個條件(jian)(jian)時,將日志(zhi)記錄(lu)到其(qi)他(ta)文(wen)件(jian)(jian)。

  • <file>:被寫入的文件名,可以是相對目錄,也可以是絕對目錄,如果上級目錄不存在會自動創建,沒有默認值。
  • <append>:如果是 true,日志被追加到文件結尾,如果是 false,清空現存文件,默認是true。
  • <rollingPolicy>:當發生滾動時,決定RollingFileAppender的行為,涉及文件移動和重命名。屬性class定義具體的滾動策略類。

rollingPolicy有一些(xie)策略:

class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy": 最(zui)常用的滾(gun)動策略,它根(gen)據時間來制(zhi)定滾(gun)動策略,既負責滾(gun)動也負責出發滾(gun)動。

  • <fileNamePattern>:必要節點,包含文件名及“%d”轉換符,“%d”可以包含一個java.text.SimpleDateFormat指定的時間格式,如:%d{yyyy-MM}。
  • <maxHistory>:日志文件保留天數

class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy": 查看當前(qian)活動文(wen)件的大小,如果(guo)超(chao)過指定大小會(hui)告知RollingFileAppender 觸發當前(qian)活動文(wen)件滾動

  • <maxFileSize>:這是活動文件的大小,默認值是10MB。
  • <prudent>:當為true時,不支持FixedWindowRollingPolicy。支持TimeBasedRollingPolicy,但是有兩個限制,1不支持也不允許文件壓縮,2不能設置file屬性,必須留空。
  • <triggeringPolicy >: 告知 RollingFileAppender 合適激活滾動。

class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy" 根據(ju)固(gu)定窗(chuang)口(kou)算法重命(ming)名文件的滾動策略

  • <minIndex>:窗口索引最小值
  • <maxIndex>:窗口索引最大值,當用戶指定的窗口過大時,會自動將窗口設置為12。
  • <fileNamePattern>:必須包含“%i”例如,假設最小值和最大值分別為1和2,命名模式為 mylog%i.log,會產生歸檔文件mylog1.log和mylog2.log。還可以指定文件壓縮選項,例如,mylog%i.log.gz 或者 沒有log%i.log.zip
<appender name="STDFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>log.txt</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
  <!-- 每天一歸檔 -->
  <fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
   <!-- 單個日志文件最多 100MB, 60天的日志周期,最大不能超過20GB,窗口大小是1到3,當保存了3個歸檔文件后,將覆蓋最早的日志 -->
   <maxFileSize>100MB</maxFileSize>   
   <maxHistory>60</maxHistory>
   <totalSizeCap>20GB</totalSizeCap>
   <minIndex>1</minIndex>
  <maxIndex>3</maxIndex>
</rollingPolicy>
<encoder>
  <pattern>%msg%n</pattern>
</encoder>
</appender>

2.3.root節點,必選節點

<root level="INFO">
    <appender-ref ref="CONSOLE"/>
    <appender-ref ref="INFO_FILE"/>
    <appender-ref ref="WARN_FILE"/>
    <appender-ref ref="ERROR_FILE"/>
</root>

2.4 logger節點,可選節點

name:用來(lai)指定(ding)受(shou)此(ci)logger約(yue)束(shu)的(de)某一個(ge)包或者具體的(de)某一個(ge)類。

level:用來設置打印級別,大小寫(xie)無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,

additivity:是(shi)否繼承(cheng)root節點(dian),默認是(shi)true繼承(cheng)。默認情況下子(zi)Logger會繼承(cheng)父(fu)Logger的(de)appender,也就是(shi)說(shuo)子(zi)Logger會在(zai)(zai)父(fu)Logger的(de)appender里輸(shu)出(chu)(chu)。若(ruo)是(shi)additivity設(she)為false,則子(zi)Logger只(zhi)會在(zai)(zai)自己的(de)appender里輸(shu)出(chu)(chu),而不會在(zai)(zai)父(fu)Logger的(de)appender里輸(shu)出(chu)(chu)。

2.5. 子節點<property>


用(yong)來定義變(bian)量值,它有兩個(ge)屬性name和value,通過(guo)<property>定義的值會被插入到logger上下文中,可以使“${}”來使用(yong)變(bian)量。

<property name="log.path" value="logs"></property>

2.6子節點<contextName>

  用來(lai)設(she)置(zhi)上(shang)下(xia)(xia)文(wen)名稱(cheng),每個(ge)logger都關(guan)聯到logger上(shang)下(xia)(xia)文(wen),默認上(shang)下(xia)(xia)文(wen)名稱(cheng)為(wei)default。但可以使用<contextName>設(she)置(zhi)成其他名字,用于區分(fen)不(bu)同應(ying)用程序(xu)的記(ji)錄。一旦設(she)置(zhi),不(bu)能修改(gai)。

<configuration scan="true" scanPeriod="60 seconds" debug="false">
     <contextName>myApp</contextName>
    <!--其他配置省略-->
</configuration>

3.完整的Logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!-- 日志上下文名稱   -->
    <contextName>realtime-flink</contextName>
    <!-- 日志輸出編碼 -->
    <property name="log.charset" value="utf-8"/>
    <!-- 日志存放路徑 -->
    <property name="log.path" value="logs"/>
    <!-- 日志輸出格式 -->
    <property name="log.pattern"
              value="%black(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - %gray(%msg%n)"/>
 
    <!-- 控制臺輸出 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>
 
    <!-- 系統日志輸出 -->
    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/info.log</file>
        <!-- 循環政策:基于時間創建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大的歷史 180天 -->
            <maxHistory>180</maxHistory>
        </rollingPolicy>
        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <pattern>
                    <pattern>{"log":"%date{yyyy-MM-dd HH:mm:ss.SSS}[%thread] %level %logger:%method:%line - %message",
                        "time":"%date{yyyy-MM-dd HH:mm:ss.SSS}", "stream":"file"}%n
                    </pattern>
                </pattern>
            </providers>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 過濾的級別 -->
            <level>INFO</level>
            <!-- 匹配時的操作:接收(記錄) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配時的操作:拒絕(不記錄) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
 
    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/error.log</file>
        <!-- 循環政策:基于時間創建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大的歷史 180天 -->
            <maxHistory>180</maxHistory>
        </rollingPolicy>
        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <pattern>
                    <pattern>{"log":"%date{yyyy-MM-dd HH:mm:ss.SSS}[%thread] %level %logger:%method:%line - %message",
                        "time":"%date{yyyy-MM-dd HH:mm:ss.SSS}", "stream":"file"}%n
                    </pattern>
                </pattern>
            </providers>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 過濾的級別 -->
            <level>ERROR</level>
            <!-- 匹配時的操作:接收(記錄) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配時的操作:拒絕(不記錄) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
 
    <!-- 系統模塊日志級別控制 TODO 生產改成info -->
    <logger name="cn.ctyun.bigdata" level="debug"/>
    <!-- Spring日志級別控制  -->
    <logger name="org.springframework" level="warn"/>
 
    <!--系統調試日志-->
    <root level="info">
        <appender-ref ref="console"/>
    </root>
 
    <!--系統操作日志-->
    <root level="info">
        <appender-ref ref="file_info"/>
        <appender-ref ref="file_error"/>
    </root>
 
    <!--監控sql日志輸出 TODO 生產可以改成OFF-->
    <logger name="jdbc.sqlonly" level="INFO" additivity="false">
        <appender-ref ref="console"/>
    </logger>
 
    <logger name="jdbc.resultset" level="ERROR" additivity="false">
        <appender-ref ref="console"/>
    </logger>
 
    <!--  如想看到表格數據,將OFF改為INFO  -->
    <logger name="jdbc.resultsettable" level="OFF" additivity="false">
        <appender-ref ref="console"/>
    </logger>
 
    <logger name="jdbc.connection" level="OFF" additivity="false">
        <appender-ref ref="console"/>
    </logger>
 
    <logger name="jdbc.sqltiming" level="OFF" additivity="false">
        <appender-ref ref="console"/>
    </logger>
 
    <logger name="jdbc.audit" level="OFF" additivity="false">
        <appender-ref ref="console"/>
    </logger>
</configuration>

 

0條評論
作者已關閉評論
劉****猛
7文章數(shu)
0粉絲數
劉****猛
7 文(wen)章 | 0 粉絲
原創(chuang)

logback配置文件XML詳解

2023-06-15 03:08:10
30
0

Logback 是一個基于(yu)(yu) Java 的日志框架,被廣泛應(ying)用于(yu)(yu) Java 應(ying)用程序中(zhong)。它是 Log4j 框架的改進版,提供了高度可配置的日志記錄功能,具有(you)靈活性(xing)和性(xing)能優勢

Logback 包含了三(san)個主要的(de)組件:Logger、Appender 和 Layout。Logger 用(yong)于創(chuang)建日志記錄器,Appender 用(yong)于定(ding)義(yi)(yi)日志輸(shu)出(chu)的(de)目標,而 Layout 則(ze)定(ding)義(yi)(yi)了日志的(de)格式(shi)。

以(yi)下是 Logback 的(de)一些主要特點:

  1. 高度(du)可(ke)配置(zhi):Logback 允(yun)許通過 XML 配置(zhi)文件或(huo)者編程方(fang)式(shi)(shi)進(jin)行靈活的配置(zhi)。你可(ke)以定(ding)義日志輸出的級別、輸出目標、格式(shi)(shi)等等。

  2. 繼承 Log4j:Logback 被(bei)設計為 Log4j 的直接替(ti)代(dai)品,可以無縫遷(qian)移現有的 Log4j 配(pei)置文(wen)件(jian)到 Logback。

  3. 低(di)開(kai)銷(xiao):Logback 在設計上盡量減少對系統性能的(de)影響,具有高效的(de)異步(bu)日志記錄機制和線程安全性。

  4. 支持多(duo)種(zhong)輸出:Logback 提供了多(duo)種(zhong) Appender,包括 ConsoleAppender、FileAppender、SocketAppender 等,可以將(jiang)日志輸出到控制臺、文件、網絡(luo)等不同目標。

  5. 靈活的過濾器:Logback 允許(xu)通過過濾器機制對日志(zhi)進行過濾和處理,你可以根據日志(zhi)級(ji)別、關鍵字(zi)等條件來過濾日志(zhi)記錄(lu)。

  6. SLF4J 兼容:Logback 與 SLF4J(Simple Logging Facade for Java)框(kuang)架無縫集成,SLF4J 提供了一個統一的日(ri)志門面,使得(de)應用(yong)程序可(ke)以方便地切換日(ri)志框(kuang)架而不(bu)需要修改代碼。

下面是logba.xml配(pei)置(zhi)文(wen)件引入java后(hou)臺的流程和配(pei)置(zhi)詳解:

1查找默認配置文件

logback默認會查找以下文(wen)件

logback-test.xml

logback.groovy

logback.xml

2 配置節點

2.1 根節點<configuration>

根節點包含以下屬性

  • scan: 當此屬性設置為true時,配置文件如果發生改變,將會被重新加載,默認值為true。
  • scanPeriod: 設置監測配置文件是否有修改的時間間隔,如果沒有給出時間單位,默認單位是毫秒。當scan為true時,此屬性生效。默認的時間間隔為1分鐘。
  • debug: 當此屬性設置為true時,將打印出logback內部日志信息,實時查看logback運行狀態。默認值為false。
<?xml version="1.0" encoding="UTF-8"?>
<!--        scan : 當此屬性設置為true時,配置文件如果發生改變,將會被重新加載,默認值為true-->
<configuration scan="false" scanPeriod="60 seconds" debug="false">
</configuration>

 2.2 子節點<appender>

負責寫日(ri)志的組件(jian),它有兩個必(bi)要屬(shu)性name和class。name指定appender名稱,class指定appender的全(quan)限定名。

appender實(shi)現類有以下幾種。

1. ConsoleAppender 日(ri)志輸出到(dao)控制臺

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>stdout %d %p - %m%n</pattern>
    </encoder>
</appender>

2. FileAppender 日志添加到文件(靜態文件)

  • <file>:被寫入的文件名,可以是相對目錄,也可以是絕對目錄,如果上級目錄不存在會自動創建,沒有默認值。
  • <append>:如果是 true,日志被追加到文件結尾,如果是 false,清空現存文件,默認是true。
  • <encoder>:對記錄事件進行格式化。(具體參數稍后講解 )
  • <prudent>:如果是 true,日志會被安全的寫入文件,即使其他的FileAppender也在向此文件做寫入操作,效率低,默認是 false。
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
  <file>testFile.log</file>
  <append>true</append>
  <encoder>
     <pattern>%d %p - %m%n</pattern>
  </encoder>
</appender>

3. RollingFileAppender(動(dong)態文件(jian))

RollingFileAppender滾動記錄文件(jian),先將日志(zhi)記錄到指定(ding)文件(jian),當符合(he)某個條(tiao)件(jian)時,將日志(zhi)記錄到其(qi)他文件(jian)。

  • <file>:被寫入的文件名,可以是相對目錄,也可以是絕對目錄,如果上級目錄不存在會自動創建,沒有默認值。
  • <append>:如果是 true,日志被追加到文件結尾,如果是 false,清空現存文件,默認是true。
  • <rollingPolicy>:當發生滾動時,決定RollingFileAppender的行為,涉及文件移動和重命名。屬性class定義具體的滾動策略類。

rollingPolicy有一些策略(lve):

class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy": 最(zui)常用(yong)的滾動(dong)(dong)策(ce)(ce)略,它根(gen)據時間來(lai)制定滾動(dong)(dong)策(ce)(ce)略,既負責(ze)滾動(dong)(dong)也(ye)負責(ze)出(chu)發(fa)滾動(dong)(dong)。

  • <fileNamePattern>:必要節點,包含文件名及“%d”轉換符,“%d”可以包含一個java.text.SimpleDateFormat指定的時間格式,如:%d{yyyy-MM}。
  • <maxHistory>:日志文件保留天數

class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy": 查(cha)看當(dang)前活動(dong)文件的大小,如果超過指定(ding)大小會告知RollingFileAppender 觸發當(dang)前活動(dong)文件滾動(dong)

  • <maxFileSize>:這是活動文件的大小,默認值是10MB。
  • <prudent>:當為true時,不支持FixedWindowRollingPolicy。支持TimeBasedRollingPolicy,但是有兩個限制,1不支持也不允許文件壓縮,2不能設置file屬性,必須留空。
  • <triggeringPolicy >: 告知 RollingFileAppender 合適激活滾動。

class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy" 根(gen)據固定(ding)窗(chuang)口算法重命名文件(jian)的滾動策略

  • <minIndex>:窗口索引最小值
  • <maxIndex>:窗口索引最大值,當用戶指定的窗口過大時,會自動將窗口設置為12。
  • <fileNamePattern>:必須包含“%i”例如,假設最小值和最大值分別為1和2,命名模式為 mylog%i.log,會產生歸檔文件mylog1.log和mylog2.log。還可以指定文件壓縮選項,例如,mylog%i.log.gz 或者 沒有log%i.log.zip
<appender name="STDFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>log.txt</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
  <!-- 每天一歸檔 -->
  <fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
   <!-- 單個日志文件最多 100MB, 60天的日志周期,最大不能超過20GB,窗口大小是1到3,當保存了3個歸檔文件后,將覆蓋最早的日志 -->
   <maxFileSize>100MB</maxFileSize>   
   <maxHistory>60</maxHistory>
   <totalSizeCap>20GB</totalSizeCap>
   <minIndex>1</minIndex>
  <maxIndex>3</maxIndex>
</rollingPolicy>
<encoder>
  <pattern>%msg%n</pattern>
</encoder>
</appender>

2.3.root節點,必選節點

<root level="INFO">
    <appender-ref ref="CONSOLE"/>
    <appender-ref ref="INFO_FILE"/>
    <appender-ref ref="WARN_FILE"/>
    <appender-ref ref="ERROR_FILE"/>
</root>

2.4 logger節點,可選節點

name:用來指定受此logger約束的(de)某一(yi)(yi)個(ge)包(bao)或者具(ju)體(ti)的(de)某一(yi)(yi)個(ge)類。

level:用來設置(zhi)打印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,

additivity:是否繼承root節點,默認(ren)是true繼承。默認(ren)情況下(xia)子(zi)(zi)Logger會(hui)(hui)繼承父(fu)Logger的(de)appender,也就是說子(zi)(zi)Logger會(hui)(hui)在(zai)父(fu)Logger的(de)appender里(li)輸出。若是additivity設為false,則子(zi)(zi)Logger只會(hui)(hui)在(zai)自己的(de)appender里(li)輸出,而不會(hui)(hui)在(zai)父(fu)Logger的(de)appender里(li)輸出。

2.5. 子節點<property>


用來定義(yi)(yi)變量值,它(ta)有兩個屬性name和value,通過(guo)<property>定義(yi)(yi)的(de)值會(hui)被插入到logger上(shang)下文中,可以(yi)使(shi)“${}”來使(shi)用變量。

<property name="log.path" value="logs"></property>

2.6子節點<contextName>

  用(yong)(yong)來設(she)置上下(xia)文名(ming)(ming)稱,每(mei)個logger都關聯(lian)到logger上下(xia)文,默認(ren)上下(xia)文名(ming)(ming)稱為(wei)default。但可以使用(yong)(yong)<contextName>設(she)置成其他名(ming)(ming)字(zi),用(yong)(yong)于區分不(bu)同應用(yong)(yong)程序(xu)的記錄。一(yi)旦設(she)置,不(bu)能修改。

<configuration scan="true" scanPeriod="60 seconds" debug="false">
     <contextName>myApp</contextName>
    <!--其他配置省略-->
</configuration>

3.完整的Logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!-- 日志上下文名稱   -->
    <contextName>realtime-flink</contextName>
    <!-- 日志輸出編碼 -->
    <property name="log.charset" value="utf-8"/>
    <!-- 日志存放路徑 -->
    <property name="log.path" value="logs"/>
    <!-- 日志輸出格式 -->
    <property name="log.pattern"
              value="%black(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - %gray(%msg%n)"/>
 
    <!-- 控制臺輸出 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>
 
    <!-- 系統日志輸出 -->
    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/info.log</file>
        <!-- 循環政策:基于時間創建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大的歷史 180天 -->
            <maxHistory>180</maxHistory>
        </rollingPolicy>
        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <pattern>
                    <pattern>{"log":"%date{yyyy-MM-dd HH:mm:ss.SSS}[%thread] %level %logger:%method:%line - %message",
                        "time":"%date{yyyy-MM-dd HH:mm:ss.SSS}", "stream":"file"}%n
                    </pattern>
                </pattern>
            </providers>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 過濾的級別 -->
            <level>INFO</level>
            <!-- 匹配時的操作:接收(記錄) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配時的操作:拒絕(不記錄) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
 
    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/error.log</file>
        <!-- 循環政策:基于時間創建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大的歷史 180天 -->
            <maxHistory>180</maxHistory>
        </rollingPolicy>
        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <pattern>
                    <pattern>{"log":"%date{yyyy-MM-dd HH:mm:ss.SSS}[%thread] %level %logger:%method:%line - %message",
                        "time":"%date{yyyy-MM-dd HH:mm:ss.SSS}", "stream":"file"}%n
                    </pattern>
                </pattern>
            </providers>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 過濾的級別 -->
            <level>ERROR</level>
            <!-- 匹配時的操作:接收(記錄) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配時的操作:拒絕(不記錄) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
 
    <!-- 系統模塊日志級別控制 TODO 生產改成info -->
    <logger name="cn.ctyun.bigdata" level="debug"/>
    <!-- Spring日志級別控制  -->
    <logger name="org.springframework" level="warn"/>
 
    <!--系統調試日志-->
    <root level="info">
        <appender-ref ref="console"/>
    </root>
 
    <!--系統操作日志-->
    <root level="info">
        <appender-ref ref="file_info"/>
        <appender-ref ref="file_error"/>
    </root>
 
    <!--監控sql日志輸出 TODO 生產可以改成OFF-->
    <logger name="jdbc.sqlonly" level="INFO" additivity="false">
        <appender-ref ref="console"/>
    </logger>
 
    <logger name="jdbc.resultset" level="ERROR" additivity="false">
        <appender-ref ref="console"/>
    </logger>
 
    <!--  如想看到表格數據,將OFF改為INFO  -->
    <logger name="jdbc.resultsettable" level="OFF" additivity="false">
        <appender-ref ref="console"/>
    </logger>
 
    <logger name="jdbc.connection" level="OFF" additivity="false">
        <appender-ref ref="console"/>
    </logger>
 
    <logger name="jdbc.sqltiming" level="OFF" additivity="false">
        <appender-ref ref="console"/>
    </logger>
 
    <logger name="jdbc.audit" level="OFF" additivity="false">
        <appender-ref ref="console"/>
    </logger>
</configuration>

 

文章來自個人專欄
文章 | 訂閱
0條評論
作者已關閉評論
作者已關閉評論
0
0