在今天的帖子中,我将向您展示如何将日志语句过滤为警告电子邮件。 这是出于监视我正在处理的一个应用程序的一些关键点的需要。 您可以使用一些工具来执行应用程序监视。 我不会详细介绍这些工具,但有时让应用程序发送警告电子邮件会更容易。

我主要将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>

此配置将过滤日志以电子邮件只有ERRORFATAL阈值中的类不登录与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监视和筛选应用程序日志到邮件相关推荐

  1. log4j 程序日志_使用log4j监视和筛选应用程序日志到邮件

    log4j 程序日志 在今天的帖子中,我将向您展示如何将日志语句过滤为警告电子邮件. 这是出于监视我正在处理的一个应用程序的一些关键点的需要. 您可以使用一些工具来执行应用程序监视. 我不会详细介绍这 ...

  2. log4j2_使用log4j监视和筛选应用程序日志到邮件

    log4j2 在今天的帖子中,我将向您展示如何将日志语句过滤为警告电子邮件. 这是出于监视我正在处理的一个应用程序的几个关键点的需要. 您可以使用一些工具来执行应用程序监视. 我没有详细介绍这些工具, ...

  3. log4j 程序日志_Log4j错误–减慢您的应用程序

    log4j 程序日志 最近,我们正在对流行的SaaS应用程序进行故障排除. 该应用程序间歇性地变慢. 要从问题中恢复,必须重新启动应用程序. 在高流量期间,此应用有时会变慢. 有时在交通繁忙时也是如此 ...

  4. 应用程序日志管理工具

    应用程序负责机构中的大量终端用户活动(从日常任务到复杂的业务逻辑相关活动).应用程序日志记录所有这些任务,并且能够全面记录机构内发生的情况.如果要了解应用程序使用情况.性能或安全性,那么日志管理是最佳 ...

  5. EventLog Analyzer应用程序日志管理

    应用程序日志管理的重要性 应用程序负责组织中的大部分终端用户活动,从简单的日常任务到复杂的业务操作.简而言之,应用程序运行业务,关键业务应用程序,如文件服务器.数据库服务器和邮件服务器,需要不断监测, ...

  6. 深入剖析HADOOP程序日志

    参考:http://www.cnblogs.com/gpcuster/archive/2009/08/21/1551715.html 前提 本文来自于 博客园 逖靖寒的世界 http://gpcust ...

  7. log4j 打印线程号配置_Log4J日志整合及配置详解

    一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...

  8. Log4j、Logback的使用以及日志门面模式(外观模式)

    常用日志框架 j.u.l:  j.u.l是java.util.logging包的简称,是JDK在1.4版本中引入的Java原生日志框架.Java Logging API提供了七个日志级别用来控制输出 ...

  9. log4j每天,每小时产生一日志文件

    log4j每天,每小时产生一日志文件 2016年08月05日 14:14:33 阅读数:6254 一.之前的文章中有log4j的相关配置以及属性的介绍,下面我们先把配置列出来: log4j.rootL ...

最新文章

  1. php 类 接口的区别吗,PHP的接口类(interface)和抽象类(abstract)的区别
  2. mysql主从复制原理详解_MySQL主从复制没使用过?三大步骤让你从原理、业务上理解透彻...
  3. spring基于注解程序开发
  4. spring中的ReflectionUtil
  5. Nuxt.js开发中碰到的问题(二)引入gitment评论系统
  6. Ubuntu-16.04 部署 OpenStack Ocata下
  7. 2019年上海市数学建模讲座(3)微分方程建模方法
  8. 【MM模块】Report 标准报表简介
  9. Prometheus部署监控容器
  10. Spring-boot配置JedisShardInfo
  11. ubuntu 12.04 php5.3 降级为 5.2
  12. 电商指标详细介绍和推荐系统常用评估指标
  13. 从JavaScript预编译看function的生存时间
  14. 时间戳与全球唯一性标识
  15. C# 判断文件/文件夹是否存在;
  16. GAMP学习-函数流程图调用(部分)(一)
  17. xp系统共享文件夹免密码访问设置
  18. 计算机组成原理答案 耿,计算机组成理习题课2.ppt
  19. win7修改默认字体成xp宋体教程
  20. 集团化企业的电子印章管理模式

热门文章

  1. 2018蓝桥杯省赛---java---A---9(倍数问题)
  2. 复制中含有非法字符导致的错误
  3. 服务器windows系统如何登陆,如何登陆windows云服务器
  4. 互联网+大赛作品_“颂中国力量 绘美好梦想”全市中小学生互联网+书画大赛作品展示(五)...
  5. ubuntu ifconfig_Ubuntu 设置固定 IP 最简单的方法!
  6. junit mockito_从工作中清除代码–使用JUnit 5,Mockito和AssertJ编写可执行规范
  7. 使用互联网了解的两个月里_我两个月来对Quarkus的了解
  8. jshell_五分钟的JShell
  9. 网络研讨室_即将举行的网络研讨会:调试生产中Java的5种最佳实践
  10. findfirst_当心findFirst()和findAny()