天天看點

Log4j 2.0在開發中的進階使用詳解—SocketAppender的遠端輸出(五)

log4j2的appenders充分考慮了日志事件的輸出、包裝以及過濾轉發的可能,包括最基本的輸出到本地檔案、輸出到遠端主機,

對檔案進行封裝、注入,并且還能按照日志檔案的時間點、檔案大小等條件進行自動封存。

例如,想要将幾個不同源的日志彙集到一起,可以用flumeappender;想要在logevent中注入資訊,

可以用rewriteappender;想要讓系統按照設定的時間間隔自動封存日志資訊,可以用rollingfileappender

(每隔一定時間自動儲存一份新增的日志檔案,并按照時間戳等指定格式命名);當産生安全級别達error或fatal的logevent時,

給維護人員發送郵件可用smtpappender;希望将日志資訊寫到遠端主機的,可用socketappender;希望能夠按照rfc5424格式向遠端主機發送日志資訊,

可用syslogappender等等。

socketappender

将log event輸出到一個遠端伺服器上(需指定伺服器名和端口号),資料可以以任意指定的格式經由tcp或udp協定發送。

socketappender中比較重要的參數有:

⑴ host,string,指定伺服器的主機名。(必需)

⑵ immediateflush,boolean,是否立即flush,還是等待緩存到一定大小後在flush。

⑶ layout,layout,log event輸出的格式。

⑷ port,integer,遠端伺服器堅挺log event的應用的端口号。

⑸ protocol,string,發送log event所使用的協定,"tcp" 或"udp"。

⑹ reconnectiondelay,integer,當連接配接斷開時,延遲等待的ms數。

⑺ name,string ,appender的名稱。

⑻ protocol,string,通訊協定 預設tcp。可選值 "tcp" (default), "ssl" or "udp".

⑼ ssl,sslconfiguration,包含密鑰存儲庫和信任存儲庫的配置.

⑽ filter,filter,一個過濾器來确定事件應該由這個appender。 不止一個過濾器 可以通過使用一個compositefilter。

⑾ immediatefail,boolean,設定為true時,日志事件不會等待嘗試重新連接配接,将立即如果失敗 套接字是不可用的。

⑿ immediateflush,boolean, 當該值設定成真時,預設情況下,每個寫将沖洗。 這将保證寫的資料 到磁盤,但可能會影響性能。

⒀ layout,layout,logevent ,布局使用格式。 預設值是serializedlayout。

⒁ reconnectiondelay,integer ,如果設定為值大于0,一個錯誤後socketmanager将嘗試重新連接配接 在指定的毫秒數後的伺服器。 如果連接配接失敗 将抛出一個異常(可以被應用程式如果ignoreexceptions是 設定為假)。

⒂ ignoreexceptions,boolean,預設值是真正的添加事件時,遇到了引起異常 内部記錄,然後忽略。 當設定為假将傳播到異常 調用者。 你必須設定這個假當包裝這個appenderfailoverappender。

日志伺服器代碼(main方法):

日志伺服器代碼(runnable線程):

用戶端xml配置(log4j2.xml):

用戶端測試代碼:

輸出效果:

歡迎大家關注我的個人部落格!!!!

如有不懂,疑問或者欠妥的地方,請加qq群:135430763   進行回報,共同學習!