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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

015_logback中的自定义Appender

發(fā)布時間:2025/4/17 编程问答 78 豆豆
生活随笔 收集整理的這篇文章主要介紹了 015_logback中的自定义Appender 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 繼承AppenderBase就可以輕松地寫自己的appender。AppenderBase處理過濾器、狀態(tài)信息和大多數appender共享的其他功能。派生類只需要實現一個append(Object

eventObject)方法。

2. 例子

2.1. 新建一個名為MyselfAppend的Java項目, 同時添加相關jar包

2.2. 在src目錄下, 新建logback.xml

<configuration><appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>%-4relative [%thread] %-5level - %msg%n</pattern></encoder></appender><appender name="myAppend" class="com.fj.MyselfAppend"> <fileName>log/myAppend.xml</fileName><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>%-4relative [%thread] %-5level - %msg%n</pattern></encoder></appender><root level="debug"><appender-ref ref="stdout" /><appender-ref ref="myAppend" /></root></configuration>

2.3. 新建MyselfAppend.java

package com.fj;import java.io.File; import java.io.FileWriter; import java.io.IOException; import ch.qos.logback.classic.encoder.PatternLayoutEncoder; import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.AppenderBase; import ch.qos.logback.core.util.FileUtil;public class MyselfAppend extends AppenderBase<ILoggingEvent> {private String fileName;private PatternLayoutEncoder encoder;public String getFileName() {return fileName;}public void setFileName(String fileName) {this.fileName = fileName;}public PatternLayoutEncoder getEncoder() {return encoder;}public void setEncoder(PatternLayoutEncoder encoder) {this.encoder = encoder;}@Overrideprotected void append(ILoggingEvent event) {if (this.encoder == null) {addError("No layout set for the appender named [" + name + "].");return; }if (null == fileName || fileName.length() < 5 || !fileName.endsWith(".xml")) {addError("Is not xml file, fileName [" + fileName + "].");return;}File file = new File(fileName);boolean result = FileUtil.createMissingParentDirectories(file);if (!result) {addError("Failed to create parent directories for [" + file.getAbsolutePath() + "]");}StringBuffer sb = new StringBuffer();sb.append("<log>").append("\r\n");sb.append("\t").append("<relative>").append(event.getTimeStamp()).append("</relative>").append("\r\n");sb.append("\t").append("<thread>").append(event.getThreadName()).append("</thread>").append("\r\n");sb.append("\t").append("<level>").append(event.getLevel()).append("</level>").append("\r\n");sb.append("\t").append("<msg>").append(event.getMessage()).append("</msg>").append("\r\n");sb.append("</log>").append("\r\n");try {if(!file.exists()) {file.createNewFile();}FileWriter fw = new FileWriter(file, true);fw.write(sb.toString());fw.flush();fw.close();} catch (IOException e) {e.printStackTrace();}}}

2.4. 新建MyAppendExample.java

package com.fj;import org.slf4j.Logger; import org.slf4j.LoggerFactory;public class MyAppendExample {private static final Logger logger = LoggerFactory.getLogger(MyAppendExample.class);public static void main(String[] args) {logger.error("繼承AppenderBase就可以輕松地寫自己的appender。");logger.warn("AppenderBase處理過濾器、狀態(tài)信息和大多數appender共享的其他功能。");logger.info("派生類只需要實現一個append(Object eventObject)方法。");} }

2.5. 運行項目, 控制臺打印

2.6. 運行項目, myAppend.xml文件輸出

總結

以上是生活随笔為你收集整理的015_logback中的自定义Appender的全部內容,希望文章能夠幫你解決所遇到的問題。

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