阿里云服务器网站开发,男女在床上做孔网站,上海网站建筑公司,91永久海外地域网名高新几个月前#xff0c;当我进行大型应用程序重构时#xff0c;发现用于记录日志的基于log4j的代码确实令人讨厌#xff0c;重复了数百次#xff1a; if (LOG.isDebugEnabled()) {LOG.debug(Logging some stuff stuff);
}我想摆脱isXXXEnabled#xff0c;这就… 几个月前当我进行大型应用程序重构时发现用于记录日志的基于log4j的代码确实令人讨厌重复了数百次 if (LOG.isDebugEnabled()) {LOG.debug(Logging some stuff stuff);
} 我想摆脱isXXXEnabled这就是我找到Logback和SLF4J的方式 。 登录和SLF4J 与SLF4J结合使用的Logback提供了出色的API和快速强大的日志记录框架实现。 从log4j切换到Logback的原因不是本文的主题它们已经在logback网站上进行了详细描述。 很快您会发现Logback和SL4FJ有什么用 跳过isXXXEnabled的简单快速方法 LOG.debug(Logging some stuff {}, stuff); 自动重载配置文件 强大的日志过滤器 将属性文件加载到配置xml中 条件配置 借助SLF4J迁移工具从log4j api迁移到SLF4J的速度非常快。 我已经决定将所有项目都切换到Logback几个月后我不得不说我对这个决定感到非常满意。 为了在您的项目中使用Logback请添加以下依赖项 dependencygroupIdorg.slf4j/groupIdartifactIdslf4j-api/artifactIdversion1.6.4/version
/dependencydependencygroupIdch.qos.logback/groupIdartifactIdlogback-classic/artifactIdversion1.0.1/version
/dependencydependencygroupIdorg.slf4j/groupIdartifactIdjcl-over-slf4j/artifactIdversion1.6.4/version
/dependency 使用Logback设置错误通知 在具有正确日志记录的应用程序中应将每个级别为ERROR的条目记录为应解决的问题。 当然最常见的记录错误的方法是使用堆栈跟踪将异常记录到日志文件中但是如果您在多台主机上有大量应用程序则检查错误可能很耗时。 聪明的方法是将它们登录到数据库中这可以通过DBAppender实现。 我发现在电子邮件中发送所有异常以立即修复它们最有帮助。 为了将Logback设置为发送异常邮件我们需要添加Java Mail依赖项 dependencygroupIdjavax.mail/groupIdartifactIdmail/artifactIdversion1.4/version
/dependency 并在logback.xml中定义SMTPAppender的配置 ?xml version1.0 encodingUTF-8?
configuration!-- some application specific configuration here --appender namesheriff classch.qos.logback.classic.net.SMTPAppendersmtpHostlocalhost/SMTPHostfromsheriffmycompany.com/Fromtojohnmycompany.com/TosubjectSomething went wrong/Subjectlayout classch.qos.logback.classic.html.HTMLLayout/filter classch.qos.logback.classic.filter.ThresholdFilterlevelERROR/level/filter/appenderroot levelERRORappender-ref refsheriff //root
/configuration 由于将ThresholdFilter的级别设置为ERROR我们可以确保即使更改了根级别也只能发送错误邮件。 现在您应该会收到类似于以下内容的电子邮件 在开发环境中跳过错误通知 可能您将不需要接收来自开发环境的那些邮件并且由于有logback配置中的条件您可以轻松地跳过它们。 为了使用条件您需要向Janino添加依赖项 dependencygroupIdjanino/groupIdartifactIdjanino/artifactIdversion2.5.10/version
/dependency 下一步是了解您的环境。 在Logback配置中您可以访问系统属性logback属性或特殊变量例如HOSTNAME和CONTEXT_NAME以及它们来确定您的环境。 在我的应用程序中 我使用Spring配置文件 因此我的ROOT记录器配置为 root levelERRORif condition${spring.profiles.active} productionappender-ref refsheriff //if
/root log4j用户的常用词汇 如果您决定坚持使用log4j则可以使用SMTPAppender 。 由于log4j-over-slf4j库Log4j可以与SLF4J一起使用。 结论 使用Logback发送邮件不是通知错误的唯一方法。 可以使用Jabber附加程序 甚至可以编写将通过SMS网关发送错误的附加程序。 由你决定。 您在项目中使用了哪些错误通知解决方案 参考 Software Development Journey博客上的JCG合作伙伴 Maciej Walkowiak提供了带有Logback的应用程序错误通知 。 翻译自: https://www.javacodegeeks.com/2012/07/logback-application-errors-notification.html