附加程序列表
記錄器允許您一次將數據保存到多個文件中。這樣的輸出數據流被稱為appender(來自append)。有很多標準的 appender,所以我們只介紹最流行的:
| 附加程序 | 描述 | |
|---|---|---|
| 1個 | 安慰 | 將數據打印到控制台 |
| 2個 | 文件 | 將數據輸出到文件 |
| 3個 | 每日滾動文件 | 輸出數據到文件,文件被循環覆蓋 |
| 4個 | 異步 | 允許您將數據異步寫入另一個附加程序 |
| 5個 | 插座 | 將數據寫入特定套接字 |
| 6個 | JDBC | 使用 JDBC 協議將消息寫入數據庫 |
| 7 | JPA | 使用 JPA 協議將消息寫入數據庫 |
| 8個 | 網址 | 通過 HTTP 協議將事件發送到遠程服務器 |
| 9 | 郵件傳輸協議 | 將消息存儲在緩衝區中,然後將它們作為電子郵件發送 |
所有附加程序的良好文檔都在他們的官方網站上
下面我們將考慮其中最受歡迎和最簡單的。
ConsoleAppender
最簡單的附加程序是ConsoleApender. 正如您可能已經猜到的那樣,他只是將消息寫入控制台。它有幾個對我們來說很有趣的參數:
| 屬性 | ||
|---|---|---|
| 1個 | 姓名 | 附加程序名稱 |
| 2個 | 篩選 | 允許您過濾一些消息 |
| 3個 | 佈局 | 指定輸出時消息的格式 |
| 4個 | 目標 | 指定寫入位置:SYTEM_OUT或SYSTEM_ERR |
配置它非常容易:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%m%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="STDOUT"/>
</Root>
</Loggers>
</Configuration>
文件追加器
最有用的附加程序是FileAppender. ConsoleAppender與他將消息寫入文件不同。當您的應用程序在服務器上的某處運行時,這非常有用。它有很多參數,因為 它必須能夠在不同的操作系統上寫入文件。
但我們只會考慮其中最受歡迎的。
| 1個 | 姓名 | 指定附加程序的名稱 |
| 2個 | 篩選 | 允許您過濾一些消息 |
| 3個 | 佈局 | 指定輸出時消息的格式 |
| 4個 | 文件名 | 指定寫入消息的文件名 |
| 5個 | 附加 | 如果true,則消息將添加到舊日誌中,如果false- 每次啟動應用程序時都會重新創建日誌文件。 |
| 6個 | 緩衝區大小 | 以字節為單位設置緩衝區大小 |
| 7 | 立即沖洗 | 如果true,則每條消息實際上都立即寫入磁盤(沒有緩衝區)。日誌開始工作緩慢,但這可以避免您在程序崩潰時丟失數據。 |
您已經知道如何很好地處理文件,因此這些設置對您來說並不是什麼新鮮事。配置這樣的記錄器比控制台記錄器更容易:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<File name="MyFile" fileName="logs/app.log">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
</File>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="MyFile"/>
</Root>
</Loggers>
</Configuration>
RollingFileAppender
最流行的附加程序是RollingFileAppender. 與它不同的是FileAppender,它允許您將日誌拆分成許多小文件。這對於大型日誌非常重要。此外,它還允許您設置在新文件開始寫入後如何處理舊文件的規則。
這個 appender 有近百種不同的設置。您可以在鏈接中找到更多關於它們的信息。
考慮這個 appender 最流行的屬性:
| 屬性 | ||
|---|---|---|
| 1個 | 姓名 | 指定附加程序的名稱 |
| 2個 | 篩選 | 允許您過濾一些消息 |
| 3個 | 佈局 | 指定輸出時消息的格式 |
| 4個 | 文件名 | 指定寫入消息的文件名 |
| 5個 | 文件模式 | 指定不再寫入的存檔文件的命名模式 |
| 6個 | 政策 | 指定文件應該開始被覆蓋的條件 |
| 7 | 戰略 | 描述如何處理舊文件:存檔、保留多少天的歷史等。 |
這是一個很好的例子:
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout> <Pattern>%d %p %c{1.} [%t] %m%n</Pattern> </PatternLayout>
<Policies> <TimeBasedTriggeringPolicy /> <SizeBasedTriggeringPolicy size="250 MB"/> </Policies>
</RollingFile>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
該參數filePattern指定舊日誌歸檔的模板。還有兩種,當觸發時,會寫入一個新的文件:
TimeBasedTriggeringPolicy– 如果新的一天開始(當前日期更改),將工作SizeBasedTriggeringPolicy- 如果文件大小達到 250MB 將工作
GO TO FULL VERSION