log4j 程序日志_使用log4j监视和筛选应用程序日志到邮件
log4j 程序日志
在今天的帖子中,我將向您展示如何將日志語句過濾為警告電子郵件。 這是出于監視我正在處理的一個應用程序的一些關鍵點的需要。 您可以使用一些工具來執行應用程序監視。 我不會詳細介紹這些工具,但有時讓應用程序發送警告電子郵件會更容易。
我主要將log4j用于記錄需求。 不幸的是,由于Java生態系統中有許多日志記錄框架,因此本文僅涵蓋其中的一部分。 將來我可能會為其他人做些事情,但是我想強調一下AntónioGon?alves關于記錄日志API標準化的舊文章: 我需要您作為Logging API Spec Lead! 。 這里介紹的示例是針對log4j的 ,但是github項目還包含一個log4j2示例。
用例
為了提供更多細節,我希望在應用程序生成錯誤時得到通知,但也忽略應用程序本身已經處理的錯誤。 對于一個更具體的示例,我遇到一種情況,其中數據庫插入會生成約束違例異常,但是此錯誤由應用程序專門處理。 即使這樣,JDBC驅動程序也會記錄該異常。 對于這種情況,我不希望收到通知。
設置SMTPAppender
無論如何,查看log4j ,您可以創建一個將所有日志發送到電子郵件的附加程序,只需選中SMTPAppender即可 。 看起來像這樣:
log4j-SMTPAppender
<appender name="SMTP" class="org.apache.log4j.net.SMTPAppender"><errorHandler class="org.apache.log4j.helpers.OnlyOnceErrorHandler"/><param name="Threshold" value="ERROR"/><param name="To" value="someone@somemail.com"/><param name="From" value="someonelse@somemail.com"/><param name="Subject" value="Log Errors"/><param name="SMTPHost" value="smtp.somemail.com"/><param name="SMTPUsername" value="username"/><param name="SMTPPassword" value="password"/><param name="BufferSize" value="1"/><param name="SMTPDebug" value="true"/><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}:%L] %m%n"/></layout> </appender>篩選
我們的過濾需求在標準log4j庫中不可用。 您需要使用log4j-extras ,它為您提供了支持過濾復雜表達式的ExpressionFilter 。 我們還使用常規log4j庫中的StringMatchFilter 。
現在,我們可以向SMTPAppender添加一個triggeringPolicy :
log4j-triggeringPolicy
<triggeringPolicy class="org.apache.log4j.rolling.FilterBasedTriggeringPolicy"><filter class="org.apache.log4j.varia.StringMatchFilter"><param name="StringToMatch" value="ERROR01"/><param name="AcceptOnMatch" value="false"/></filter><filter class="org.apache.log4j.filter.ExpressionFilter"><param name="expression"value="CLASS LIKE .*Log4jExpressionFilter.*"/><param name="acceptOnMatch" value="false"/></filter><filter class="org.apache.log4j.filter.LevelRangeFilter"><param name="levelMin" value="ERROR"/><param name="levelMax" value="FATAL"/></filter> </triggeringPolicy>此配置將過濾日志以電子郵件只有ERROR和FATAL閾值中的類不登錄與Log4jExpressionFilter在它的名字,并沒有ERROR01的日志信息。
看一下LoggingEventFieldResolver ,看看可以與ExpressionFilter一起使用的其他表達式 。 您可以使用EXCEPTION,METHOD和其他一些非常有用的工具。
測試中
如果您依賴真實的服務器,則測試SMTPAppender并不容易。 幸運的是,您可以使用模擬javamail ,甚至不必擔心會污染SMTP服務器。 這也包含在github項目中。
資源資源
您可以從我的github存儲庫中克隆log4j和log4j2的完整工作副本。
Log4j郵件過濾器
由于我將來可能會修改代碼,因此您可以從1.0版中下載本文的原始源。 或者,克隆存儲庫,并使用以下命令從發行版1.0中檢出標記: git checkout 1.0 。
翻譯自: https://www.javacodegeeks.com/2014/08/monitoring-and-filtering-application-log-to-mail-with-log4j.html
log4j 程序日志
總結
以上是生活随笔為你收集整理的log4j 程序日志_使用log4j监视和筛选应用程序日志到邮件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 吉利丁粉怎么用 吉利丁粉的注意事项
- 下一篇: 史记的作者是谁(中国历史上史记这本书究竟