国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Log4J Java日志框架特性的內部實現

開發 后端
本文探討了日志系統的基本特性、實現日志系統的意義、方法和內部結構,并且給出了一種基于 Java 平臺的日志系統的詳細設計。同時也指出日志系統會向服務化、異步化的方向發展。

由于 Log4J 得到廣泛應用,從使用者的角度考慮,本文所設計的框架,采用了部分 Log4J 的接口和概念,但內部實現則完全不同。使用 Java 實現日志框架,關鍵的技術在于前面提及的Java日志框架特性的內部實現,特別是:日志的分類和級別、日志分發框架的設計、日志記錄器的設計以及在設計中的高性能和高穩定性的考慮。

2.1系統架構

Java日志框架可以分為日志記錄模塊和日志輸出模塊兩大部分。日志記錄模塊負責創建和管理日志記錄器 (Logger) ,每一個 Logger 對象負責按照不同的級別 (LoggerLevel) 接收各種記錄了日志信息的日志對象 (LogItem) , Logger 對象首先獲取所有需要記錄的日志,并且同步地將日志分派給日志輸出模塊。日志輸出模塊則負責日志 輸出器 (Appender) 的創建和管理,以及日志的輸出。系統中允許有多個不同的日志 輸出器 ,日志 輸出器 負責將日志記錄到存儲介質當中。系統結構如下圖 1 所示:

日志系統結構圖 

圖 1 ,Java日志系統結構圖

下圖 2 使用 UML 類圖給出了Java日志系統的架構:

日志系統框架架構圖 

圖 2 ,日志系統框架架構圖

在圖 2 給出的架構中,日志記錄器 Logger 是整個日志系統框架的用戶使用接口,程序員可以通過該接口記錄日志,為了實現對日志進行分類,系統設計允許存在多個 Logger 對象,每一個 Logger 負責一類日志的記錄, Logger 類同時實現了對其對象本身的管理。 LoggerLevel 類定義了整個日志系統的級別,在客戶端創建和發送日志時,這些級別會被使用到。 Logger 對象在接收到客戶端創建和發送的日志消息時,同時將該日志消息包裝成日志系統內部所使用的日志對象 LogItem ,日志對象除了發送端所發送的消息以外,還會包裝諸如發送端類名、發送事件、發送方法名、發送行號等等。這些額外的消息對于系統的跟蹤和調試都非常有價值。包裝好的 LogItem 最終被發送給 輸出器 ,由這些 輸出 器負責將日志信息寫入最終媒介, 輸出器 的類型和個數均不固定,所有的 輸出器 通過 AppenderManager 進行管理,通常通過配置文件即可方便擴展出多個 輸出器 。

2.2日志記錄部分的設計

如前文所述,日志記錄部分負責接收日志系統客戶端發送來的日志消息、日志對象的管理等工作。下面詳細描述了日志記錄部分的設計要點:

1.日志記錄器的管理

系統通過保持多個 Logger 對象的方式來進行日志記錄的分類。每一個 Logger 對象代表一類日志分類。因此, Logger 對象的名稱屬性是其唯一標識,通過名稱屬性獲取一個 Logger 對象:

  1. Logger logger = Logger.getLogger(“LoggerName”);  

一般的,使用類名來作為日志記錄器的名稱,這樣做的好處在于能夠盡量減少日志記錄器命名之間的沖突(因為 Java 類使用包名),同時能夠將日志記錄分類得盡可能的精細。因此,假定有一 UserManager 類需要使用日志服務,則更一般的使用方式為:

  1. Logger logger = Logger.getLogger(UserManager.class);  

2.日志分級的實現

按照日志目的不同,將日志的級別由低到高分成五個級別:

DEBUG - 表示輸出的日志為一個調試信息

INFO      - 表示輸出的日志是一個系統提示

WARN   - 表示輸出的日志是一個警告信息

ERROR - 表示輸出的日志是一個系統錯誤

FATAL    - 表示輸出的日志是一個導致系統崩潰嚴重錯誤

這些日志級別定義在 LoggerLevel 接口中,被日志記錄器 Logger 在內部使用。而對于日志系統客戶端則可使用 Logger 類接口對直接調用并輸出這些級別的日志, Logger 的這些接口描述如下:

  1. public void debug(String msg);  // 輸出調試信息   
  2.  
  3. public void info(String msg);   // 輸出系統提示   
  4.  
  5. public void warn(String msg);   // 輸出警告信息   
  6.  
  7. public void fatal(String msg);  // 輸出系統錯誤   
  8.  
  9. public void error(String msg);  // 輸出嚴重錯誤   

通過對 Logger 對象上這些接口的調用,直接為日志信息賦予了級別屬性,這樣為后繼的按照不同級別進行輸出的工作奠定了基礎。

3.日志對象信息的獲取

日志對象上包含了一條日志所具備的所有信息。通常這些信息包括:輸出日志的時間、 Java 類、類成員方法、所在行號、日志體、日志級別等等。在 JDK1.4 中可以通過在方法中拋出并且捕獲住一個異常,則在捕捉到的異常對象中已經由 JVM 自動填充好了系統調用的堆棧,在 JDK1.4 中則可以使用 java.lang.StackTraceElement 獲取到每一個堆棧項的基本信息,通過對日志客戶端輸出日志方法調用層數的推算,則可以比較容易的獲取到 StackTraceElement 對象,從而獲取到輸出日志時的 Java 類、類成員方法、所在行號等信息。在 JDK1.3 或者更早的版本中,相應的工作則必須通過將異常的堆棧信息輸出到字符串中,并分析該字符串格式得到。

2.3日志輸出部分的設計

日志輸出部分的設計具有一定的難度,在本文設計的日志系統中,日志的輸出、多線程的支持、日志系統的擴展性、日志系統的效率等問題都交由日志輸出部分進行管理。

1.日志輸出器的繼承結構

在日志的輸出部分采用了二層結構,即定義了一個抽象的日志輸出器( AbstractLoggerAppender ) , 然后從該抽象類繼承出實際的日志輸出器。 AbstractLoggerAppender 定義了一系列的對日志進行過濾的方法,而具體輸出到存儲媒介的方法則是一個抽象方法,由子類實現。在系統中默認實現了控制臺輸出器和文件輸出器兩種,其中控制臺輸出器的實現頗為簡單。

2.文件輸出器的內部實現

在日志記錄部分的實現中,并沒有考慮多線程、高效率等問題,因此文件輸出器必須考慮這些問題的處理。在文件輸出器內部使用 java.lang.Vector 定 義了一個線程安全的高速緩沖,所有通過日志記錄部分分派到文件輸出器的日志被直接放置到該高速緩沖當中。同時在文件輸出器內部定義一個工作線程,負責定期 將高速緩沖中的內容保存到文件,在保存的過程中同時可以進行日志文件的備份等工作。由于采用了高速緩沖的結構,很顯然日志客戶端的調用已經不再是一個同步 調用,從而不再會需要等到文件操作后才返回,提高的系統調用的速度。該原理 如圖 3 所示:

文件輸出器內部結構 

圖 3 ,文件輸出器內部結構

2.4設計難點

通過上述設計,一個具有良好擴展能力的高性能Java日志架就已經具有了一定的雛形。在設計過程中幾個難點問題需要進一步反思。

一、是否整個系統應當采用完全異步的結構,通過類似于消息機制的方式來進行由日志客戶端發送日志給日志系統。這種方式可以作為日志系統框架另一種運行方式,在后繼設計中加以考慮。

二、在文件輸出器中可以看到,目前雖然可以擴展多個日志輸出器,但是目前提供的抽象類中僅僅提供了對日志的過濾機制,而沒有提供的緩存機制,目前的緩存機制被放在文件輸出器中實現,因此在未來的進一步設計中,可以將文件輸出器中的緩存機制上移到抽象類當中。

2.5設計模式

在設計過程中我們特別注意使用了數個經典的設計模式。如: Logger 對象的創建使用了工廠方法模式( Factory Method )、由 AbstractLoggerAppender 和 ConsoleAppender 以及 FileAppender 構成了策略模式( Strategy ),除此以外,還大量使用了單例模式( Singleton )。在設計中適當運用設計模式能夠加快設計進度、提高設計質量。

【編輯推薦】

  1. Java日志系統:不可或缺的跟蹤調試工具
  2. JDK日志分級作為核心API最佳實踐淺析
  3. JDK1.6在LINUX下的安裝配置
  4. 在JDK7 b50中將實現正則表達式命名捕獲組
  5. JDK日志框架介紹及其主要功能淺析
責任編輯:yangsai 來源: 網絡
相關推薦

2013-05-21 10:58:43

Log4jActiveMQSpring

2020-01-07 10:06:26

Slf4jLog4JLogback

2025-01-14 01:00:00

日志接口Log4j

2022-03-25 13:42:15

Log4j漏洞網絡安全

2022-02-13 16:18:57

JetBrainsIntelliJLog4j

2022-02-15 17:51:38

Log4j漏洞網絡安全

2021-12-14 23:44:26

漏洞Log4j項目

2020-11-04 12:33:08

Log4j 2日志Logback

2022-01-02 09:28:38

漏洞Log4j大數據

2021-04-02 07:58:36

LogbackLog4j2日志

2016-10-21 13:10:18

javalog4jslf4j

2022-01-10 11:54:54

FTCLog4j聯邦貿易委員會

2021-12-23 09:47:36

Log4jRCE漏洞DoS漏洞

2021-12-23 11:03:25

Log4j 漏洞漏洞

2022-01-24 10:02:53

漏洞微軟網絡攻擊

2022-03-30 11:29:53

漏洞補丁Spring

2009-06-12 17:03:51

JBoss和log4j

2025-10-10 04:10:00

2021-06-03 10:58:16

logbacklog4jJava

2021-12-13 01:49:34

漏洞Log4j代碼
點贊
收藏

51CTO技術棧公眾號

国产专区视频| 一区二区久久久久久| 麻豆成人在线观看| 污片在线观看一区二区| 欧美精品日日鲁夜夜添| 欧美综合天天夜夜久久| 欧美日韩精品欧美日韩精品| 亚洲图片在区色| 亚洲第一精品电影| 日韩av手机在线观看| 超碰在线播放91| 日韩毛片视频| 国产一区二区三区欧美| 国产色在线 com| 最新国产精品久久久| 日本韩国欧美国产| 国产高清免费在线| 三级电影一区| 麻豆视频成人| av在线第一页| 福利在线国产| 成人av先锋影音| 国产精品福利网站| 91精品国产自产观看在线| 欧美日本不卡视频| 日本电影免费看| 日本一区二区三区视频在线| 欧美色图在线观看| 日本不卡免费播放| 日本一区二区三级电影在线观看| 婷婷视频在线播放| 青青草成人在线观看| 国产日韩一区欧美| 禁断一区二区三区在线| 国产小视频国产精品| 亚洲女同av| 亚洲精品国产精品国自产在线| 成黄免费在线| 欧美日韩精品一区视频| 女人黄色片免费| 国产精品无人区| 午夜激情福利在线| 中文字幕中文字幕在线一区 | 国产精品一区二区久久| 在线精品自拍| 欧美激情免费视频| av在线不卡顿| 久久久福利视频| 国产午夜久久| 久久免费视频2| 波多野结衣91| 成人免费淫片95视频观看网站| 亚洲永久精品国产| 看女生喷水的网站在线观看| 亚洲第一网站免费视频| 丁香久久综合| 青青久久av北条麻妃黑人| 亚洲情侣在线| 正在播放亚洲| 中文字幕中文字幕在线一区| 日本中文字幕电影在线免费观看| 亚洲国产精久久久久久| 98视频精品全部国产| 国产精品福利小视频| 久久一二三四| hbad中文字幕| 亚洲国产精品美女| 影视先锋久久| 亚洲欧美国产一区二区| 亚洲欧洲精品一区二区三区| www免费在线观看| 色婷婷**av毛片一区| 欧美日韩亚洲一区二区三区在线| 黄色一级视频播放| 亚洲一区在线观看视频| 午夜影院在线播放| 亚洲综合色激情五月| 中文字幕av在线一区二区三区| 欧美三级理伦电影| 国产成人一区二区三区小说| 国产福利一区二区三区| 午夜视频在线观看韩国| 久久久久久久久久久av| 激情欧美一区二区| 免费在线观看黄| 亚洲一区二区在线播放| 亚洲视频日本| 91精品国产高清久久久久久久久 | 国产一区二区三区毛片| 日韩国产欧美| 欧美区二区三区| 色诱色偷偷久久综合| 色综合久久九月婷婷色综合| 虎白女粉嫩尤物福利视频| 99热在线成人| www国产精品视频| 俺要去色综合狠狠| 免费裸体视频网站| 不卡av在线网站| 国产在线精品一区在线观看麻豆| 成人性爱视频在线观看| 国产日韩亚洲精品| 91麻豆精品国产91久久久资源速度| 精品国产乱码久久久| 四虎精品在线| 国产传媒一区二区| 欧美三区在线观看| 婷婷精品进入| 日本天堂在线观看| 一区二区三区一级片| 视频直播国产精品| 久久久久久久av麻豆果冻| 国产精品对白久久久久粗| 久草在线中文888| 国产精品日韩欧美| 欧美亚洲日本国产| 日韩影院免费视频| 日韩中文视频| 91国内视频| 精品一区二区三区毛片| 亚洲一区二区三区香蕉| 欧美激情综合色| 9191精品国产综合久久久久久| 国产在线视频一区二区| 青青草91久久久久久久久| 久久uomeier| www在线视频| 你懂得网站在线| 国产喷水theporn| 久无码久无码av无码| 久久久久久久久久久久久久一区 | 日韩av免费大片| 中文在线а√天堂| 久草中文在线| 青青青草原在线| 欧美亚洲日本一区| 欧美精选视频在线观看| 欧美一区 二区 三区| 国产欧美久久久久久久久| 国产黄色一级网站| 欧美一级爆毛片| 成人免费电影网址| 成人在线免费高清视频| 91在线视频18| 含羞草www国产在线视频| 欧美成人免费小视频| 成人精品动漫| 香蕉视频免费在线播放| 婷婷六月激情| 亚洲精品少妇久久久久久 | 91精品国产91久久久久久一区二区 | 亚洲性图自拍| 福利片在线观看| 成人一区二区电影| 国产精品美女免费看| 久久偷看各类女兵18女厕嘘嘘| 亚洲美女av在线播放| 亚洲国产成人久久综合| 91精品国产综合久久精品 | 国产精品嫩草视频| 992tv在线成人免费观看| 国产亚洲美女久久| 一本色道久久综合狠狠躁篇怎么玩| 亚洲国产精品中文| 亚洲国产成人在线播放| 精品一区二区三区四区在线| 亚洲精品狠狠操| 美日韩在线视频| 欧美一区91| 日韩欧美精品网站| 欧美国产日本韩| 一区av在线播放| 亚洲第一免费网站| 色哟哟精品一区| 51精品在线观看| 成视频免费观看在线看| 国产成+人+日韩+欧美+亚洲| 美女av一区二区| 密臀av一区二区三区| 啪啪国产精品| 国产麻豆一精品一av一免费| 欧美日韩国产精品| 欧美日韩专区在线| 国产精品久久久91| 日本福利视频在线| 国产成人综合美国十次| 免费观看一级欧美片| av网站在线看| 成人精品国产亚洲| 欧洲grand老妇人| 亚洲成人自拍网| caoporn国产精品免费公开| 成人区一区二区| 黑人精品视频| 免费国产亚洲视频| 免费观看在线色综合| 午夜精品aaa| 久久精品国产美女| 国产视频网站在线| 羞羞答答成人影院www|