自定義log4j Appender
MySQL中可以自定義Appender,這裡給出一個自定義的將日誌輸出到指定的檔案的appender:
1、繼承AbstractAppender類
FileAppender.class
@Plugin(name = FileAppender.FILE_APPENDER, category = "Core", elementType = Appender.ELEMENT_TYPE, printObject = true) public class FileAppender extends AbstractAppender { public static final String FILE_APPENDER = "FileAppender"; private String fileName; /* 建構函式 */ public FileAppender(String name, Filter filter, Layout<? extends Serializable> layout, boolean ignoreExceptions, String fileName) { super(name, filter, layout, ignoreExceptions); this.fileName = fileName; } @Override public void append(LogEvent event) { final byte[] bytes = getLayout().toByteArray(event); writerFile(bytes); } /* 接收配置檔案中的引數 */ @PluginFactory public static FileAppender createAppender(@PluginAttribute("name") String name, @PluginAttribute("fileName") String fileName, @PluginElement("Filter") final Filter filter, @PluginElement("Layout") Layout<? extends Serializable> layout, @PluginAttribute("ignoreExceptions") boolean ignoreExceptions) { if (name == null) { LOGGER.error("no name defined in conf."); return null; } if (layout == null) { layout = PatternLayout.createDefaultLayout(); } // 建立檔案 if (!createFile(fileName)) { return null; } return new FileAppender(name, filter, layout, ignoreExceptions, fileName); } private static boolean createFile(String fileName) { Path filePath = Paths.get(fileName); try { // 每次都重新寫檔案,不追加 if (Files.exists(filePath)) { Files.delete(filePath); } Files.createFile(filePath); } catch (IOException e) { LOGGER.error("create file exception", e); return false; } return true; } private void writerFile(byte[] log) { try { Files.write(Paths.get(fileName), log, StandardOpenOption.APPEND); } catch (IOException e) { LOGGER.error("write file exception", e); } } }
分析說明:
1、append()方法:
即為將要列印的資料輸出到指定地方。
2、craeteAppender()方法:
初始化配置
3、編寫對應的建構函式
4、在log4j2.xml檔案中配置如下:
<!-- 這個就是自定義的Appender --> <FileAppender name="File" fileName="log.log"> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] [%-5p] {%F:%L} - %m%n" /> </FileAppender> <root level="all"> <appender-ref ref="File"/> </root>
4、當列印的log日誌時,在專案的根目錄下可以找到log.log檔案
注意:
@PluginElement("Filter") final Filter filter,
@PluginElement("Layout") Layout<? extends Serializable> layout,
這裡是用@PluginElement註解。
相關推薦
自定義log4j Appender
MySQL中可以自定義Appender,這裡給出一個自定義的將日誌輸出到指定的檔案的appender: 1、繼承AbstractAppender類 FileAppender.class @Plugin(name = FileAppender.FILE_APPENDE
自定義log4j的appender
實現自定義log4j Appender其實很簡單: 1、繼承log4j公共的基類:AppenderSkeleton 2、列印日誌核心方法:abstract protected void append
自定義log4j的appender寫es日誌
本篇和大家分享的是自定義log4j的appender,用es來記錄日誌並且通過kibana瀏覽es記錄;就目前網際網路或者一些中大型公司通常會用到第三方組合elk,其主要用寫資料到es中,然後通過視覺化工具kibana來做直觀資料檢視和統計;本篇內容節點如下: docker快速搭建es,es heade
自定義log4j日誌級別
extends false nal obj customer 文件 type word ati 轉載自: http://blog.csdn.net/seven_cm/article/details/26849821 自定義log4j日誌級別 參考了網上資料: http:
自定義log4j.properties的載入位置
方法一: 在main函式中新增如下程式碼 public class App { static final Logger logger = Logger.getLogger(App.class); public static void main( String[] args
Log4J日誌配置詳解和自定義log4j日誌級別及輸出日誌到不同檔案實現方法
package com.jo.work.log4j; import java.util.Enumeration; import org.apache.log4j.Appender; import org.apache.log4j.FileAppender; import org.apache.log4j.
自定義Log4j配置檔案位置
預設設定:Log4j配置檔案放在src下則可以被log4j.jar讀取到。 如果想要把log4j.properties檔案遷移到專案的其他位置,則可以做如下配置: <!-- 設定由Spring載入的Log4j配置檔案位置 --><context-para
如何隨心所欲地自定義log4j輸出格式
在某種情況下,我們需要在不影響原有程式碼的基礎上自定義log4j的輸出格式。例如這樣的需求,硬性規定了專案的日誌格式為: 日期 日誌等級 ClassName:line - [版本號] [請求ip地址] [專案應用名稱] [服務介面模組] [模組方法] [業務引數1] [業務引
【Spring】- springmvc自定義Log4j配置
浪費了“黃金五年”的Java程式設計師,還有救嗎? >>>
log4j自定義appender實現,處理異常堆疊
在專案中需要自定義實現一個log4j的appender。根據log中MDC裡的資訊,構造日誌儲存的目錄結構。自定義實現log4j appender的方法已經介紹過了。主要是覆蓋AppenderSkeleton中的appender方法。 @Ove
自定義實現log4j的appender
log4j,應用最廣泛的日誌框架。其作者後來推出logback,也是好選擇。不多說廢話。 log4j元件介紹 Log4j主要有三個元件: Logger:負責供客戶端程式碼呼叫,執行debug(Object msg)、info(Object m
Log4j2、Log4j、Logback自定義Appender實現
logback: <!--異常收集 --> <appender name="gwarn"class="com.duowan.gwarn.sdk.GwarnLogbackAppender"> <filterclass="ch.qos.logback.classi
logback-Appender 自定義詳解
實際上Appender可能是logback框架中最重要的元件之一,雖然Logger是記錄日誌的介面,但是如果一個Logger沒有關聯到任何Appender的話,那麼這個Logger就無法記錄任何資訊。此外雖然logback提供了很多擴充套件點,但是在應用中,我們可能很少會擴
Log4j擴充套件使用--自定義輸出
package org.apache.log4j.config; import org.apache.log4j.Appender; import org.apache.log4j.Level; import org.apache.log4j.Priority; import org.apache.log4
自定義日誌輸出類log4j
以下是我自己寫的一個日誌類,寫這個類的初衷是為了規範專案組各個組員的日誌輸出格式規範,為以後日誌檢視分析提供方便,在程式碼生成器里加入這個日誌類的引用,這樣就可以很好的避免組員自己直接呼叫原生的日誌框架。在這裡貼出了一是為了自己做備份,二也是讓大家看看是不是有哪
log4j使用心得之四 -- 自定義DailyRollingFileAppender歸檔檔名
log4j使用DailyRollingFileAppender對日誌檔案按天進行歸檔時,可以使用datePattern指定歸檔檔名格式. 如日誌檔名為error.log,設定datePattern=yyyyMMdd,則歸檔檔名為error.logyyyyMMdd. 這樣的
log4j自定義級別並將新級別日誌資訊輸出到指定帶日期格式的log檔案
log4j.xml的配置如下: <appender name="LOG.EMAIL" class="org.apache.log4j.RollingFileAppender"> <param name="File" value="${catalina.home}/logs/EMAIL_L
log4j自定義配置檔案路徑
一 約定優於配置 約定優於配置(convention over configuration),也稱作按約定程式設計,是一種軟體設計正規化,旨在減少軟體開發人員需做決定的數量,獲得簡單的好處,而又不失靈活性。大量的配置檔案,確實可以讓程式在一定程度上具有很大的
log4j2實現自定義Appender(輸出到檔案/RPC服務中)
1、背景 雖然log4j很強大,可以將日誌輸出到檔案、DB、ES等。但是有時候確難免完全適合自己,此時我們就需要自定義Appender,使日誌輸出到指定的位置上。 本文,將通過兩個例子說明自定義APPender,一個是將日誌寫入檔案中,另一個是將日誌傳送到遠端Thrift服
log4j配置檔案定義輸出Appender和Layout
log4j由三個重要的元件構成: - 日誌資訊的輸出格式(佈局)Layout - 日誌資訊的輸出目的地 Appender - 日誌資訊的優先順序 Level 工程中使用配置檔案定義輸出格式Layout和輸出目的地Appender,log4j支援兩種方式的配置方式: