隨筆 - 22, 文章 - 0, 評論 - 1, 引用 - 0
          數(shù)據(jù)加載中……

          logback_doc_manual_06_layouts

          http://logback.qos.ch/manual/layouts.html
          PatternLayout
               轉(zhuǎn)換模式類似于C語言里的printf()。
          轉(zhuǎn)移字符:
               c{length}
               lo{length}
               logger{length}
                    其中的length代表輸出的logger長度。
                    設(shè)為0的話例外,僅輸出最右邊的logger名。
                    其余情況會自動計算,盡量使得輸出的總字符串長度小于指定長度——但是,最右邊的logger名稱無論如何會完整保留,同時前面的每一級logger,最少會被精簡到1個字符。
                    ——%c{1}
               C{length}
               class{length}
                    打印調(diào)用者的類名稱,設(shè)置方法與上面一樣。
                    性能不高。
               contextName
               cn
                    打印logger在event最初綁定的logger context的名稱。
               d{pattern}
               date{pattern}
               d{pattern, timezone}
               date{pattern, timezone}
                    輸入日志時間,使用java.text.SimpleDateFormat的日期格式化方法。
                    如果不指定日期格式,默認(rèn)使用ISO8601,也就是2006-10-20 14:06:49,812這種形式。
                    ——%d
               F / file
                    輸出java源文件的名稱。
                    性能不高。
               caller{depth}
               caller{depth, evaluator-1, ... evaluator-n}
                    打印日志事件的調(diào)用堆棧。
                    使用評估器evaluator決定是否打印。
               L
               line
                    輸出日志記錄請求發(fā)起的行數(shù)。
                    性能不高。
               m
               msg
               message
                    日志正文
                    ——%m
               M
               method
                    日志調(diào)用方法名。
                    性能不高
               n
                    操作系統(tǒng)對應(yīng)的換行符
                    ——%n
               p
               le
               level
                    日志等級
               r
               relative
                    應(yīng)用程序啟動到日志創(chuàng)建的相對時間
               t
               thread
                    線程名
                    ——%t
               X{key:-defaultVal}
               mdc{key:-defaultVal}
                    MDC信息
               ex{depth} 
               exception{depth} 
               throwable{depth} 
               ex{depth, evaluator-1, ..., evaluator-n} 
               exception{depth, evaluator-1, ..., evaluator-n} 
               throwable{depth, evaluator-1, ..., evaluator-n}
                    輸出異常堆棧深度(如果有的話),默認(rèn)full全部輸出。
                    可以指定的參數(shù)值:
                         short:打印堆棧的第一行
                         full:打印所有行
                         任何數(shù)字:指定行數(shù)
                    使用評估器evaluator決定是否打印。
               xEx{depth} 
               xException{depth} 
               xThrowable{depth} 
               xEx{depth, evaluator-1, ..., evaluator-n} 
               xException{depth, evaluator-1, ..., evaluator-n} 
               xThrowable{depth, evaluator-1, ..., evaluator-n}
                    跟上面的類似,但是附加了包信息。
                    如果包信息不準(zhǔn)確(是猜測的),那么會自動在包信息前面附加一個“~”字符。
                    如果在日志信息模式里,未指定任何異常格式,那么系統(tǒng)會自動在末尾加上一個%xEx。
                    如果不想打印包信息(例如netbean里會出問題),那么在日志模式的末尾明確指定%ex即可,就會輸出不包含包信息的堆棧。
                    如果想不打印任何異常堆棧信息,可以使用%nopex。
                    ——%xEx
               nopex 
               nopexception          
                    加上%nopex可以阻止系統(tǒng)自動在日志模式末尾添加%xEx——也就是完全禁止異常堆棧打印。
               marker
                    輸出關(guān)聯(lián)的marker信息,如果marker多級關(guān)聯(lián),會都打印出來。
               property{key}
                    輸出key關(guān)聯(lián)的屬性——定義在logger context或者system properties里面。
               replace(p){r, t}
                    將p中的所有符合r正則的字符串,都替換成t。
                    例如%replace(%logger%msg){'\.', '/'},會將輸出的logger和msg信息中的點號都替換成斜杠。
               rEx{depth} 
               rootException{depth} 
               rEx{depth, evaluator-1, ..., evaluator-n} 
               rootException{depth, evaluator-1, ..., evaluator-n}
                    類似于xEx,也會打印異常的包信息,但是會將root exception打印到前面,跟普通的異常打印順序是反著的。
               轉(zhuǎn)義百分號: \%
               正常情況下轉(zhuǎn)義字符會被正確分割,但有些時候例外,例如%date%nHello,系統(tǒng)會解析%nHello失敗。如果真的需要在%n后緊跟一個Hello,可以這樣:%date%n{}Hello
               我一般用這個:
               %d [%t] %-5p  %c{1} - %m%n
          ------------------------------------------------------------------
          Format modifiers
               控制數(shù)據(jù)段的補齊。
               例如 %20.30logger 
                    如果logger長度小于20,則從左邊用空格補齊;如果logger長度大于30,則從開頭(左邊)切去多余字符。
                    如果20或者30前面有負(fù)號,則左右顛倒。
               假如想給日志級別只輸出1個字符(T,D,W,I,E),不需要自己寫一個Converter,而只需要配置一下即可:%.-1level
          轉(zhuǎn)義選項:
               如果轉(zhuǎn)義選項里面包含特殊字符(特別是在使用正則表達(dá)式的時候),例如大小括號、逗號、空格,那么可以用單引號或雙引號括起來,例如:
                    <pattern>%-5level - %replace(%msg){'\d{14,16}', 'XXXX'}%n</pattern>
               ——這個可以把14到16位的數(shù)字(信用卡號)轉(zhuǎn)換為XXXX。
          ------------------------------------------------------------------
          括號的特殊作用:
               %-30(%d{HH:mm:ss.SSS} [%thread]) %-5level %logger{32} - %msg%n
               可以讓括號里的兩個表達(dá)式聯(lián)合起來按照30個字符補齊。
               括號可以用反斜杠轉(zhuǎn)義:\(%d{HH:mm:ss.SSS} [%thread]\)
          ------------------------------------------------------------------
          Coloring
               著色,window需要引其它包,linux和mac os本身支持著色。
               樣例:<pattern>[%thread] %highlight(%-5level) %cyan(%logger{15}) - %msg %n</pattern>
                    %highlight會將ERROR設(shè)為紅色加粗,WARN設(shè)為紅色,INFO設(shè)為藍(lán)色,其余默認(rèn)。
                    %cyan會將logger名稱設(shè)為藍(lán)綠色。
          ------------------------------------------------------------------
          Evaluators
               EventEvaluator類的實現(xiàn),用來評估一個事件是否符合打印條件。
            <evaluator name="DISP_CALLER_EVAL">
              <expression>logger.contains("chapters.layouts") &amp;&amp; \
                message.contains("who calls thee")</expression>
            </evaluator>
            <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
              <encoder>
                <pattern>
                  %-4relative [%thread] %-5level - %msg%n%caller{2, DISP_CALLER_EVAL}
                </pattern>
              </encoder>
            </appender>
               注意因為xml的關(guān)系,要用&amp;轉(zhuǎn)義&
               應(yīng)用場景:
                    例如,如果日志級別是WARN以上,并且logger是來自一個財務(wù)模塊——那么就打印caller信息。
               注意:
                    在%caller轉(zhuǎn)義模式中,當(dāng)Evaluators返回true的時候才輸出。
                    在%ex轉(zhuǎn)義模式中,當(dāng)Evaluatorstrue的時候不輸出。
               例如下面的配置,當(dāng)異常對象為TestException時,不輸出。
            <evaluator name="DISPLAY_EX_EVAL">
              <expression>throwable != null &amp;&amp; throwable instanceof  \
                chapters.layouts.TestException</expression>
            </evaluator>
                  
            <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
              <encoder>
                <pattern>%msg%n%ex{full, DISPLAY_EX_EVAL}</pattern>
              </encoder>
            </appender>
          ------------------------------------------------------------------
          Creating a custom conversion specifier
               略
          ------------------------------------------------------------------
          HTMLLayout
               使用html表格來布局日志信息。
               可以使用普通的pattern轉(zhuǎn)義符,但轉(zhuǎn)義字符之前,不許用包括空格在內(nèi)的任何字符分隔。
            <appender name="FILE" class="ch.qos.logback.core.FileAppender">
              <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
                <layout class="ch.qos.logback.classic.html.HTMLLayout">
                  <pattern>%relative%thread%mdc%level%logger%msg</pattern>
                </layout>
              </encoder>
              <file>test.html</file>
            </appender>
               HTMLLayout會自動創(chuàng)建一個DefaultThrowableRenderer,將異常信息打印到完整的一行里。如果不想這樣,可以指定一個NOPThrowableRenderer。
          用CSS指定表格的樣式:略
          該Layout最常見的用法是配合SMTPAppender,發(fā)送html格式的日志郵件。
          ------------------------------------------------------------------
          Logback access
               略

          posted on 2014-07-13 18:58 王星游 閱讀(695) 評論(0)  編輯  收藏 所屬分類: java

          主站蜘蛛池模板: 资溪县| 定襄县| 贡觉县| 南宁市| 石景山区| 五莲县| 伊宁市| 正定县| 天镇县| 仪征市| 吉木乃县| 五常市| 龙海市| 建平县| 彰化市| 成都市| 贵溪市| 汉阴县| 蒙阴县| 陆良县| 柳河县| 商丘市| 定边县| 龙井市| 会泽县| 共和县| 宁波市| 钟祥市| 长寿区| 延长县| 灵武市| 通渭县| 陇西县| 丰原市| 华池县| 四会市| 合肥市| 静海县| 景泰县| 色达县| 济宁市|