日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

logback 常用配置详解(二) appender

發布時間:2025/3/17 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 logback 常用配置详解(二) appender 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


詳細整理了logback常用配置

不是官網手冊的翻譯版,而是使用總結,旨在更快更透徹的理解其配置

logback 簡介

logback常用配置詳解(一)<configuration> and <logger>

logback 常用配置詳解(二)<appender>

logback 常用配置詳解(三)<filter>

logback 中文手冊(官網手冊的翻譯版,在這里向中文版譯者-陳華,說聲辛苦啦)



logback 常用配置詳解(二)<appender>

<appender>:

<appender>是<configuration>的子節點,是負責寫日志的組件。

<appender>有兩個必要屬性name和class。name指定appender名稱,class指定appender的全限定名。

1.ConsoleAppender:

把日志添加到控制臺,有以下子節點:

<encoder>:對日志進行格式化。(具體參數稍后講解

<target>:字符串 System.out 或者 System.err ,默認 System.out ;

例如:

Xml代碼:

  • <configuration>

  • <appendername="STDOUT"class="ch.qos.logback.core.ConsoleAppender">

  • <encoder>

  • <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>

  • </encoder>

  • </appender>

  • <rootlevel="DEBUG">

  • <appender-refref="STDOUT"/>

  • </root>

  • </configuration>

  • 2.FileAppender:

    把日志添加到文件,有以下子節點:

    <file>:被寫入的文件名,可以是相對目錄,也可以是絕對目錄,如果上級目錄不存在會自動創建,沒有默認值。

    <append>:如果是 true,日志被追加到文件結尾,如果是 false,清空現存文件,默認是true。

    <encoder>:對記錄事件進行格式化。(具體參數稍后講解

    <prudent>:如果是 true,日志會被安全的寫入文件,即使其他的FileAppender也在向此文件做寫入操作,效率低,默認是 false。

    例如:

    Xml代碼:

  • <configuration>

  • <appendername="FILE"class="ch.qos.logback.core.FileAppender">

  • <file>testFile.log</file>

  • <append>true</append>

  • <encoder>

  • <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>

  • </encoder>

  • </appender>

  • <rootlevel="DEBUG">

  • <appender-refref="FILE"/>

  • </root>

  • </configuration>

  • 3.RollingFileAppender:

    滾動記錄文件,先將日志記錄到指定文件,當符合某個條件時,將日志記錄到其他文件。有以下子節點:

    <file>:被寫入的文件名,可以是相對目錄,也可以是絕對目錄,如果上級目錄不存在會自動創建,沒有默認值。

    <append>:如果是 true,日志被追加到文件結尾,如果是 false,清空現存文件,默認是true。

    <encoder>:對記錄事件進行格式化。(具體參數稍后講解

    <rollingPolicy>:當發生滾動時,決定RollingFileAppender 的行為,涉及文件移動和重命名。

    <triggeringPolicy>:告知RollingFileAppender合適激活滾動。

    <prudent>:當為true時,不支持FixedWindowRollingPolicy。支持TimeBasedRollingPolicy,但是有兩個限制,1不支持也不允許文件壓縮,2不能設置file屬性,必須留空。

    rollingPolicy:

    TimeBasedRollingPolicy: 最常用的滾動策略,它根據時間來制定滾動策略,既負責滾動也負責出發滾動。有以下子節點:

    <fileNamePattern>:

    必要節點,包含文件名及“%d”轉換符,“%d”可以包含一個java.text.SimpleDateFormat指定的時間格式,如:%d{yyyy-MM}。如果直接使用 %d,默認格式是 yyyy-MM-dd。RollingFileAppender 的file字節點可有可無,通過設置file,可以為活動文件和歸檔文件指定不同位置,當前日志總是記錄到file指定的文件(活動文件),活動文件的名字不會改變;如果沒設置file,活動文件的名字會根據fileNamePattern的值,每隔一段時間改變一次。“/”或者“\”會被當做目錄分隔符。

    <maxHistory>:

    可選節點,控制保留的歸檔文件的最大數量,超出數量就刪除舊文件。假設設置每個月滾動,且 <maxHistory>是6,則只保存最近6個月的文件,刪除之前的舊文件。注意,刪除舊文件是,那些為了歸檔而創建的目錄也會被刪除。

    FixedWindowRollingPolicy: 根據固定窗口算法重命名文件的滾動策略。有以下子節點:

    <minIndex>:窗口索引最小值

    <maxIndex>:窗口索引最大值,當用戶指定的窗口過大時,會自動將窗口設置為12。

    <fileNamePattern >:

    必須包含“%i”例如,假設最小值和最大值分別為1和2,命名模式為 mylog%i.log,會產生歸檔文件mylog1.log和mylog2.log。還可以指定文件壓縮選項,例如,mylog%i.log.gz 或者 沒有log%i.log.zip

    triggeringPolicy:

    SizeBasedTriggeringPolicy: 查看當前活動文件的大小,如果超過指定大小會告知 RollingFileAppender 觸發當前活動文件滾動。只有一個節點:

    <maxFileSize>:這是活動文件的大小,默認值是10MB。

    例如:每天生成一個日志文件,保存30天的日志文件。

    Java代碼:

  • <configuration> ? ?

  • ?<appender name="FILE"class="ch.qos.logback.core.rolling.RollingFileAppender"> ? ?

  • ? ?<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> ? ?

  • ? ? ?<fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern> ? ?

  • ? ? ?<maxHistory>30</maxHistory> ? ?

  • ? ?</rollingPolicy> ? ?

  • ? ?<encoder> ? ?

  • ? ? ?<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern> ? ?

  • ? ?</encoder> ? ?

  • ?</appender> ? ?

  • ?<root level="DEBUG"> ? ?

  • ? ?<appender-ref ref="FILE" /> ? ?

  • ?</root> ? ?

  • </configuration> ?


  • ?例如:按照固定窗口模式生成日志文件,當文件大于20MB時,生成新的日志文件。窗口大小是1到3,當保存了3個歸檔文件后,將覆蓋最早的日志。

    Xml代碼:

  • <configuration>

  • <appendername="FILE"class="ch.qos.logback.core.rolling.RollingFileAppender">

  • <file>test.log</file>

  • <rollingPolicyclass="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">

  • <fileNamePattern>tests.%i.log.zip</fileNamePattern>

  • <minIndex>1</minIndex>

  • <maxIndex>3</maxIndex>

  • </rollingPolicy>

  • <triggeringPolicyclass="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">

  • <maxFileSize>5MB</maxFileSize>

  • </triggeringPolicy>

  • <encoder>

  • <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>

  • </encoder>

  • </appender>

  • <rootlevel="DEBUG">

  • <appender-refref="FILE"/>

  • </root>

  • </configuration>

  • 4.另外還有SocketAppender、SMTPAppender、DBAppender、SyslogAppender、SiftingAppender,并不常用,這些就不在這里講解了,大家可以參考官方文檔。當然大家可以編寫自己的Appender。

    <encoder>:

    負責兩件事,一是把日志信息轉換成字節數組,二是把字節數組寫入到輸出流。

    目前PatternLayoutEncoder 是唯一有用的且默認的encoder ,有一個<pattern>節點,用來設置日志的輸入格式。使用“%”加“轉換符”方式,如果要輸出“%”,則必須用“\”對“\%”進行轉義。

    例如:

    Xml代碼:

  • <encoder>

  • <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>

  • </encoder


  • <pattern>里面的轉換符說明:

    轉換符 作用



    c {length }
    lo {length }
    logger {length }
    輸出日志的logger名,可有一個×××參數,功能是縮短logger名,設置為0表示只輸入logger最右邊點符號之后的字符串。 ? Conversion specifier Logger name Result



    %loggermainPackage.sub.sample.BarmainPackage.sub.sample.Bar
    %logger{0}mainPackage.sub.sample.BarBar
    %logger{5}mainPackage.sub.sample.Barm.s.s.Bar
    %logger{10}mainPackage.sub.sample.Barm.s.s.Bar
    %logger{15}mainPackage.sub.sample.Barm.s.sample.Bar
    %logger{16}mainPackage.sub.sample.Barm.sub.sample.Bar
    %logger{26}mainPackage.sub.sample.BarmainPackage.sub.sample.Bar


    C {length }
    class {length }
    輸出執行記錄請求的調用者的全限定名。參數與上面的一樣。盡量避免使用,除非執行速度不造成任何問題。
    contextName
    cn
    輸出上下文名稱。
    d {pattern }
    date {pattern }
    輸出日志的打印日志,模式語法與java.text.SimpleDateFormat 兼容。 ? Conversion Pattern Result


    %d2006-10-20 14:06:49,812
    %date2006-10-20 14:06:49,812
    %date{ISO8601}2006-10-20 14:06:49,812
    %date{HH:mm:ss.SSS}14:06:49.812
    %date{dd MMM yyyy ;HH:mm:ss.SSS}20 oct. 2006;14:06:49.812
    F / file輸出執行記錄請求的java源文件名。盡量避免使用,除非執行速度不造成任何問題。
    caller{depth}caller{depth, evaluator-1, ... evaluator-n}輸出生成日志的調用者的位置信息,整數選項表示輸出信息深度。

    例如, %caller{2} ? 輸出為:

    0 [main] DEBUG - logging statement Caller+0 at mainPackage.sub.sample.Bar.sampleMethodName(Bar.java:22) Caller+1 at mainPackage.sub.sample.Bar.createLoggingRequest(Bar.java:17)

    例如, %caller{3} ? 輸出為:

    16 [main] DEBUG - logging statement Caller+0 at mainPackage.sub.sample.Bar.sampleMethodName(Bar.java:22) Caller+1 at mainPackage.sub.sample.Bar.createLoggingRequest(Bar.java:17) Caller+2 at mainPackage.ConfigTester.main(ConfigTester.java:38)
    L / line輸出執行日志請求的行號。盡量避免使用,除非執行速度不造成任何問題。
    m / msg / message

    輸出應用程序提供的信息。

    M / method輸出執行日志請求的方法名。盡量避免使用,除非執行速度不造成任何問題。
    n輸出平臺先關的分行符“\n”或者“\r\n”。
    p / le / level輸出日志級別。
    r / relative輸出從程序啟動到創建日志記錄的時間,單位是毫秒
    t / thread輸出產生日志的線程名。
    replace(p ){r, t}

    p 為日志內容,r 是正則表達式,將p 中符合r 的內容替換為t

    例如, "%replace(%msg){'\s', ''}"

    格式修飾符,與轉換符共同使用:

    可選的格式修飾符位于“%”和轉換符之間。

    第一個可選修飾符是左對齊 標志,符號是減號“-”;接著是可選的最小寬度 修飾符,用十進制數表示。如果字符小于最小寬度,則左填充或右填充,默認是左填充(即右對齊),填充符為空格。如果字符大于最小寬度,字符永遠不會被截斷。最大寬度 修飾符,符號是點號"."后面加十進制數。如果字符大于最大寬度,則從前面截斷。點符號“.”后面加減號“-”在加數字,表示從尾部截斷。

    例如:%-4relative 表示,將輸出從程序啟動到創建日志記錄的時間 進行左對齊 且最小寬度為4。

    **下一篇將講解過濾器 ? filter**

    轉載于:https://blog.51cto.com/aubdiy/815736

    與50位技術專家面對面20年技術見證,附贈技術全景圖

    總結

    以上是生活随笔為你收集整理的logback 常用配置详解(二) appender的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。