簡體   English   中英

根據發生率在運行時更改日志級別的方法有哪些

[英]What are ways to change log level at runtime depending on occurrence rate

我想知道是否有常規方法(可能是一些第三方庫)來幫助我解決以下問題。 我希望能夠根據發生率更改日志級別。 例如,如果我捕捉到一些異常並且它每小時發生一次,我想用 WARN 級別記錄它。 但如果比率變得更高,那么我想切換到錯誤級別。 這種行為的目的是不被罕見的零星異常分散注意力,這些異常通常是不可避免的,但除非有足夠的數量,否則不應引起開發人員的注意。 當我打開 Sentry 摘要頁面時,我只想查看真正重要且需要注意的內容,而不是一些偶爾會不可避免地發生的罕見請求失敗。 但同時我不能只使用 WARN 級別,因為如果有很多這樣的故障,那么顯然有一些不好的事情發生了,需要引起注意。

為了更好地說明我的意思,我認為這可以通過一個虛構的第三方庫來完成,該庫將模仿(或封裝)slf4j/commons-logging:

LOG.warn("Failed to send request to ...", e).onRate(Rates.hourlyMoreThan(5)).switchTo(LogLevel.ERROR);

另一種方法是在 Sentry 中選擇不顯示發生率低的事件(匹配某些標准,如異常類),但據我所知這是不可能的。

假設您想使用 Log4j 執行此操作(其他日志記錄框架應該具有類似的結構),這可能可以使用自定義附加程序來完成。 如果該附加程序多次看到一條消息,它可能會嘗試更改類別(或記錄器)的級別。

以下是創建自己的 Appender 的方法: https ://logging.apache.org/log4j/2.x/manual/extending.html

這是 appender 重新配置日志記錄必須做的事情: https ://logging.apache.org/log4j/2.x/manual/customconfig.html

不確定是否可以在 Sentry UI 中進行過濾,但您肯定會創建一個基於SentryAppender的自定義 Sentry 附加程序,該附加程序將僅在達到某個閾值時測量發生並向 Sentry 發出事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM