日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

登录:应用程序错误通知

發(fā)布時(shí)間:2023/12/3 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 登录:应用程序错误通知 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
幾個(gè)月前,當(dāng)我進(jìn)行大型應(yīng)用程序重構(gòu)時(shí),發(fā)現(xiàn)用于記錄日志的基于log4j的代碼確實(shí)令人討厭,重復(fù)了數(shù)百次:

if (LOG.isDebugEnabled()) {LOG.debug("Logging some stuff = " + stuff); }

我想擺脫isXXXEnabled,這就是我找到Logback和SLF4J的方式 。 ?

登錄和SLF4J

與SLF4J結(jié)合使用的Logback提供了出色的API和快速強(qiáng)大的日志記錄框架實(shí)現(xiàn)。 從log4j切換到Logback的原因不是本文的主題,它們已經(jīng)在logback網(wǎng)站上進(jìn)行了詳細(xì)描述。 很快,您會發(fā)現(xiàn)Logback和SL4FJ有什么用:

  • 跳過isXXXEnabled的簡單快速方法: LOG.debug("Logging some stuff = {}", stuff);
  • 自動(dòng)重載配置文件
  • 強(qiáng)大的日志過濾器
  • 將屬性文件加載到配置xml中
  • 條件配置

借助SLF4J遷移工具,從log4j api遷移到SLF4J的速度非常快。 我已經(jīng)決定將所有項(xiàng)目都切換到Logback,幾個(gè)月后,我不得不說我對這個(gè)決定感到非常滿意。

為了在您的項(xiàng)目中使用Logback,請?zhí)砑右韵乱蕾図?xiàng):

<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.6.4</version> </dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.0.1</version> </dependency><dependency><groupId>org.slf4j</groupId><artifactId>jcl-over-slf4j</artifactId><version>1.6.4</version> </dependency>

使用Logback設(shè)置錯(cuò)誤通知

在具有正確日志記錄的應(yīng)用程序中,應(yīng)將每個(gè)級別為ERROR的條目記錄為應(yīng)解決的問題。

當(dāng)然,最常見的記錄錯(cuò)誤的方法是使用堆棧跟蹤將異常記錄到日志文件中,但是如果您在多臺主機(jī)上有大量應(yīng)用程序,則檢查錯(cuò)誤可能很耗時(shí)。 聰明的方法是將它們登錄到數(shù)據(jù)庫中,這可以通過DBAppender實(shí)現(xiàn)。 我發(fā)現(xiàn)在電子郵件中發(fā)送所有異常以立即修復(fù)它們最有幫助。

為了將Logback設(shè)置為發(fā)送異常郵件,我們需要添加Java Mail依賴項(xiàng):

<dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4</version> </dependency>

并在logback.xml中定義SMTPAppender的配置:

<?xml version="1.0" encoding="UTF-8"?> <configuration><!-- some application specific configuration here --><appender name="sheriff" class="ch.qos.logback.classic.net.SMTPAppender"><smtpHost>localhost</SMTPHost><from>sheriff@mycompany.com</From><to>john@mycompany.com</To><subject>Something went wrong</Subject><layout class="ch.qos.logback.classic.html.HTMLLayout"/><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>ERROR</level></filter></appender><root level="ERROR"><appender-ref ref="sheriff" /></root> </configuration>

由于將ThresholdFilter的級別設(shè)置為ERROR,我們可以確保即使更改了根級別,也只能發(fā)送錯(cuò)誤郵件。

現(xiàn)在,您應(yīng)該會收到類似于以下內(nèi)容的電子郵件:

在開發(fā)環(huán)境中跳過錯(cuò)誤通知

可能您將不需要接收來自開發(fā)環(huán)境的那些郵件,并且由于有l(wèi)ogback配置中的條件,您可以輕松地跳過它們。

為了使用條件,您需要向Janino添加依賴項(xiàng):

<dependency><groupId>janino</groupId><artifactId>janino</artifactId><version>2.5.10</version> </dependency>

下一步是了解您的環(huán)境。 在Logback配置中,您可以訪問系統(tǒng)屬性,logback屬性或特殊變量(例如HOSTNAME和CONTEXT_NAME)以及它們來確定您的環(huán)境。 在我的應(yīng)用程序中, 我使用Spring配置文件 ,因此我的ROOT記錄器配置為:

<root level="ERROR"><if condition='"${spring.profiles.active}" == "production"'><appender-ref ref="sheriff" /></if> </root>

log4j用戶的常用詞匯

如果您決定堅(jiān)持使用log4j,則可以使用SMTPAppender 。

由于log4j-over-slf4j庫,Log4j可以與SLF4J一起使用。 ?

結(jié)論

使用Logback發(fā)送郵件不是通知錯(cuò)誤的唯一方法。 可以使用Jabber附加程序 ,甚至可以編寫將通過SMS網(wǎng)關(guān)發(fā)送錯(cuò)誤的附加程序。 由你決定。

您在項(xiàng)目中使用了哪些錯(cuò)誤通知解決方案?

參考: Software Development Journey博客上的JCG合作伙伴 Maciej Walkowiak提供了帶有Logback的應(yīng)用程序錯(cuò)誤通知 。


翻譯自: https://www.javacodegeeks.com/2012/07/logback-application-errors-notification.html

總結(jié)

以上是生活随笔為你收集整理的登录:应用程序错误通知的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。