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 進行回報,共同學習!