log4j 程序日志_使用log4j监视和筛选应用程序日志到邮件
log4j 程序日志
在今天的帖子中,我將向您展示如何將日志語(yǔ)句過(guò)濾為警告電子郵件。 這是出于監(jiān)視我正在處理的一個(gè)應(yīng)用程序的一些關(guān)鍵點(diǎn)的需要。 您可以使用一些工具來(lái)執(zhí)行應(yīng)用程序監(jiān)視。 我不會(huì)詳細(xì)介紹這些工具,但有時(shí)讓?xiě)?yīng)用程序發(fā)送警告電子郵件會(huì)更容易。
我主要將log4j用于記錄需求。 不幸的是,由于Java生態(tài)系統(tǒng)中有許多日志記錄框架,因此本文僅涵蓋其中的一部分。 將來(lái)我可能會(huì)為其他人做些事情,但是我想強(qiáng)調(diào)一下AntónioGon?alves關(guān)于記錄日志API標(biāo)準(zhǔn)化的舊文章: 我需要您作為L(zhǎng)ogging API Spec Lead! 。 這里介紹的示例是針對(duì)log4j的 ,但是github項(xiàng)目還包含一個(gè)log4j2示例。
用例
為了提供更多細(xì)節(jié),我希望在應(yīng)用程序生成錯(cuò)誤時(shí)得到通知,但也忽略應(yīng)用程序本身已經(jīng)處理的錯(cuò)誤。 對(duì)于一個(gè)更具體的示例,我遇到一種情況,其中數(shù)據(jù)庫(kù)插入會(huì)生成約束違例異常,但是此錯(cuò)誤由應(yīng)用程序?qū)iT(mén)處理。 即使這樣,JDBC驅(qū)動(dòng)程序也會(huì)記錄該異常。 對(duì)于這種情況,我不希望收到通知。
設(shè)置SMTPAppender
無(wú)論如何,查看log4j ,您可以創(chuàng)建一個(gè)將所有日志發(fā)送到電子郵件的附加程序,只需選中SMTPAppender即可 。 看起來(lái)像這樣:
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>篩選
我們的過(guò)濾需求在標(biāo)準(zhǔn)log4j庫(kù)中不可用。 您需要使用log4j-extras ,它為您提供了支持過(guò)濾復(fù)雜表達(dá)式的ExpressionFilter 。 我們還使用常規(guī)log4j庫(kù)中的StringMatchFilter 。
現(xiàn)在,我們可以向SMTPAppender添加一個(gè)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>此配置將過(guò)濾日志以電子郵件只有ERROR和FATAL閾值中的類(lèi)不登錄與Log4jExpressionFilter在它的名字,并沒(méi)有ERROR01的日志信息。
看一下LoggingEventFieldResolver ,看看可以與ExpressionFilter一起使用的其他表達(dá)式 。 您可以使用EXCEPTION,METHOD和其他一些非常有用的工具。
測(cè)試中
如果您依賴(lài)真實(shí)的服務(wù)器,則測(cè)試SMTPAppender并不容易。 幸運(yùn)的是,您可以使用模擬javamail ,甚至不必?fù)?dān)心會(huì)污染SMTP服務(wù)器。 這也包含在github項(xiàng)目中。
資源資源
您可以從我的github存儲(chǔ)庫(kù)中克隆log4j和log4j2的完整工作副本。
Log4j郵件過(guò)濾器
由于我將來(lái)可能會(huì)修改代碼,因此您可以從1.0版中下載本文的原始源。 或者,克隆存儲(chǔ)庫(kù),并使用以下命令從發(fā)行版1.0中檢出標(biāo)記: git checkout 1.0 。
翻譯自: https://www.javacodegeeks.com/2014/08/monitoring-and-filtering-application-log-to-mail-with-log4j.html
log4j 程序日志
總結(jié)
以上是生活随笔為你收集整理的log4j 程序日志_使用log4j监视和筛选应用程序日志到邮件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 吉利丁粉怎么用 吉利丁粉的注意事项
- 下一篇: 将Auth0 OIDC(OAUTH 2)