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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

logback 配置文件编写

發布時間:2024/4/17 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 logback 配置文件编写 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Logback 配置

本文講logback的xml文件的配置,其中主要是在介紹各類appender。

logback 的簡單例子

xml文件大概結構 導圖鏈接

xml

<?xml version="1.0" encoding="UTF-8"?> <configuration><contextName>拽拽壞人幫</contextName><!--輸出到控制臺 --><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%cn %d{hh:MM:ss} [%20logger{0}] - %message%n</pattern></encoder></appender><logger name = "com.cck.MyLogback"><appender-ref ref = "STDOUT"/></logger><root level="debug"></root></configuration>

代碼使用

public class MyLogback {private final static Logger logger = LoggerFactory.getLogger("com.cck.MyLogback");public static void main(String[] args) {logger.info("hello world");} }

xml配置中的appender

appender 節點是配置日志的目的地,該節點必須指定name和class屬性,不同的class會有不同的子節點。

分別有以下幾種類型的appender

  • ConsoleAppender   控制臺
  • FileAppender     文件
  • RollingFileAppender  滾動記錄文件
  • SiftingAppender      自定義篩選文件

1. ConsoleAppender 控制臺

xml

<?xml version="1.0" encoding="UTF-8"?> <configuration><contextName>拽拽壞人幫</contextName><!--輸出到控制臺 --><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%cn -%.-1p %d{hh:MM:ss} [%8logger{26}] - %message%n</pattern></encoder><targer>System.err</target></appender><logger name="com.cck.MyLogback"><appender-ref ref="STDOUT" /></logger><root level="debug"></root> </configuration> <target>String</target> 用于指定字符串在控制臺的打印方式
默認是 System.out, 也可以是System.err

2. FileAppender 文件

xml

<?xml version="1.0" encoding="UTF-8"?> <configuration debug="false"><contextName>拽拽壞人幫</contextName><!--輸出到文件 --><appender name="FILE" class="ch.qos.logback.core.FileAppender"><file>logback.log</file><encoder><pattern>%cn -%.-1p %d{hh:MM:ss} [%8logger{26}] - %message%n</pattern></encoder><append>true</append><prudent>true</prudent></appender><logger name="com.cck.MyLogback" level="debug"><appender-ref ref="FILE" /></logger><root level="info"></root> </configuration> <file>logback.log</file> 指定日志文件名

<append>true</append> 日志是否追加到文件結尾,默認是true

<prudent>true</prudent> true的情況下,日志會被安全地寫入到文件 (加了鎖,因為存在多個FileAppender同時向日志文件寫入的情況),默認是false

3. RollingFileAppender 滾動記錄文件

3.1 滾動記錄文件 -- 根據時間 TimeBasedRollingPolicy

xml

<?xml version="1.0" encoding="UTF-8"?> <configuration debug="false"><contextName>拽拽壞人幫</contextName><!--滾動記錄文件 根據時間 --><appender name="timeRollFile" class="ch.qos.logback.core.rolling.RollingFileAppender"><encoder><pattern>%cn -%.-1p %d{hh:MM:ss} [%8logger{26}] - %message%n</pattern></encoder><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>logFile/%d{yyyy/MM/dd}.log</fileNamePattern><maxHistory>30</maxHistory></rollingPolicy></appender><logger name="com.cck.MyLogback" level="debug"><appender-ref ref="timeRollFile" /></logger><root level="info"></root> </configuration> <rollingPolicy></rollingPolicy> 指定滾動行為

rollingPolicy 子節點 <fileNamePattern></fileNamePattern> 指定文件名模式, yyyy/mm/dd 表示按天滾動 模式例子

<maxHistory>30</maxHistory> 控制保存的最大文件數量
如果是每天滾動<maxHistory>30</maxHistory>表示保存最近30天的日志文件

3.2 滾動記錄文件 -- 根據長度 FixedWindowRollingPolicy

xml

<?xml version="1.0" encoding="UTF-8"?> <configuration debug="false"><contextName>拽拽壞人幫</contextName><!--滾動記錄文件 根據固定長度 --><appender name="fixedRollFile" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>testFixedRollFile.log</file><encoder><pattern>%d{hh:MM:ss} [%20logger{0}] - %message%n</pattern></encoder><rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"><fileNamePattern>logFile/logFile.%i.log</fileNamePattern><minIndex>1</minIndex><maxIndex>5</maxIndex></rollingPolicy><triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><maxFileSize>1KB</maxFileSize></triggeringPolicy></appender><logger name="com.cck.MyLogback" level="debug"><appender-ref ref="fixedRollFile" /></logger><root level="info"></root> </configuration> <rollingPolicy></rollingPolicy> 指定根據窗口長度進滾動。
注意,使用 FixedWindowRollingPolicy 必須聲明<file></file>節點

rollingPolicy 子節點 <fileNamePattern></fileNamePattern> 指定命名模式
注意,必須包含%i,i 為窗口索引。
滾動時,日志文件名為logFile/logFile'i'.log
eg .logFile/logFile1.log logFile/logFile2.log

rollingPolicy 子節點 <minIndex>1</minIndex> 指定 i 的最小值

rollingPolicy 子節點 <maxIndex>5</maxIndex> 指定 i 的最大值

<triggeringPolicy></triggeringPolicy > 指定何時滾動

triggeringPolicy 子節點 <maxFileSize>1KB</maxFileSize> 指定文件大小為 1KB 時進行滾動

4. SiftingAppender 自定義篩選文件

假設有以下需求

userId 是6位的,現在想讓前4位id相同的用戶的日志放在一個文件夾中。并且id為 000000 單獨拿出來。 也就是以下的效果:/000000.log/0001/01.log/23.log/0002/12.log/00.log

第一步,按照業務需求編寫Java類

package com.cck; import java.util.Map; import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.sift.AbstractDiscriminator; public class MyLoggerDiscriminator extends AbstractDiscriminator<ILoggingEvent> { public final static String KEY = "user"; private String filePath; private String fileName; private String defaultValue = "000000"; public String getDefaultValue() { return defaultValue; } public void setDefaultValue(String defaultValue) { this.defaultValue = defaultValue; } @Override public String getDiscriminatingValue(ILoggingEvent e) { // 拿到mdc Map<String, String> mdc = e.getMDCPropertyMap(); String user = mdc.get(KEY); if(user == null || user == "000000") { return defaultValue; } // 返回一個路徑 filePath = user.substring(0, 4) + "/"; fileName = user.substring(4, 6); return filePath + fileName; } @Override public String getKey() { return KEY; } }

第二步,在xml使用

<?xml version="1.0" encoding="UTF-8"?> <configuration debug="false"> <contextName>拽拽壞人幫</contextName> <!-- 自定義 --> <appender name="siftingLog" class="ch.qos.logback.classic.sift.SiftingAppender"> <discriminator class="com.cck.MyLoggerDiscriminator" /> <sift> <appender name="user-${user}" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>siftingLog/${user}.log</file> <encoder> <pattern>%date{HH:mm:ss} %.-1level[%25logger{0}] - &lt;%message&gt;%n</pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>siftingLog/${user}.%d{yyyy-MM-dd}.log.gz</fileNamePattern> </rollingPolicy> </appender> </sift> </appender> <logger name="com.cck.MyLogback" level="debug"> <appender-ref ref="siftingLog" /> </logger> <root level="info"></root> </configuration> <discriminator class="com.cck.MyLoggerDiscriminator" /> 指定自定自定義的鑒別類

第三步,使用

package com.cck; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.MDC;public class MyLogback {private final static Logger logger = LoggerFactory.getLogger("com.cck.MyLogback");public static void main(String[] args) {MDC.put(MyLoggerDiscriminator.KEY, "156651");logger.debug("hello world");} }

總結

以上是生活随笔為你收集整理的logback 配置文件编写的全部內容,希望文章能夠幫你解決所遇到的問題。

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