博客网站搭建,淄博制作网站的公司,公众号关注,贵阳app开发制作在今天的帖子中#xff0c;我将向您展示如何将日志语句过滤为警告电子邮件。 这是出于监视我正在处理的一个应用程序的一些关键点的需要。 您可以使用一些工具来执行应用程序监视。 我不会详细介绍这些工具#xff0c;但有时让应用程序发送警告电子邮件会更容易。 我主要将l… 在今天的帖子中我将向您展示如何将日志语句过滤为警告电子邮件。 这是出于监视我正在处理的一个应用程序的一些关键点的需要。 您可以使用一些工具来执行应用程序监视。 我不会详细介绍这些工具但有时让应用程序发送警告电子邮件会更容易。 我主要将log4j用于记录需求。 不幸的是由于Java生态系统中有许多日志记录框架因此本文仅涵盖其中的一部分。 将来我可能会为其他人做些事情但是我想强调一下AntónioGonçalves关于记录API标准化的旧文章 我需要您作为Logging API Spec Lead 。 这里介绍的示例适用于log4j 但是github项目还包含一个log4j2示例。 用例 为了提供更多细节我想在应用程序生成错误时得到通知但也忽略应用程序本身已经处理的错误。 对于一个更具体的示例我遇到一种情况其中数据库插入会生成约束违例异常但是此错误由应用程序专门处理。 即使这样JDBC驱动程序也会记录该异常。 对于这种情况我不希望收到通知。 设置SMTPAppender 无论如何查看log4j 您可以创建一个将所有日志发送到电子邮件的附加程序只需选中SMTPAppender即可 。 看起来像这样 log4j-SMTPAppender appender nameSMTP classorg.apache.log4j.net.SMTPAppendererrorHandler classorg.apache.log4j.helpers.OnlyOnceErrorHandler/param nameThreshold valueERROR/param nameTo valuesomeonesomemail.com/param nameFrom valuesomeonelsesomemail.com/param nameSubject valueLog Errors/param nameSMTPHost valuesmtp.somemail.com/param nameSMTPUsername valueusername/param nameSMTPPassword valuepassword/param nameBufferSize value1/param nameSMTPDebug valuetrue/layout classorg.apache.log4j.PatternLayoutparam nameConversionPattern value%d{ABSOLUTE} %-5p [%c{1}:%L] %m%n//layout
/appender筛选 我们的过滤需求在标准log4j库中不可用。 您需要使用log4j-extras 它为您提供了支持过滤复杂表达式的ExpressionFilter 。 我们还使用常规log4j库中的StringMatchFilter 。 现在我们可以向SMTPAppender添加一个triggeringPolicy log4j-triggeringPolicy triggeringPolicy classorg.apache.log4j.rolling.FilterBasedTriggeringPolicyfilter classorg.apache.log4j.varia.StringMatchFilterparam nameStringToMatch valueERROR01/param nameAcceptOnMatch valuefalse//filterfilter classorg.apache.log4j.filter.ExpressionFilterparam nameexpressionvalueCLASS LIKE .*Log4jExpressionFilter.*/param nameacceptOnMatch valuefalse//filterfilter classorg.apache.log4j.filter.LevelRangeFilterparam namelevelMin valueERROR/param namelevelMax valueFATAL//filter
/triggeringPolicy 此配置将过滤日志以电子邮件只有ERROR和FATAL阈值中的类不登录与Log4jExpressionFilter在它的名字并没有ERROR01的日志信息。 查看LoggingEventFieldResolver 看看可以与ExpressionFilter一起使用的其他表达式 。 您可以使用EXCEPTIONMETHOD和其他一些非常有用的工具。 测试中 如果您依赖真实的服务器则测试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