簡體   English   中英

提供日志記錄(調試)上下文

[英]Providing logging (debug) context

我有一個使用幾個不同Java類的應用程序,並希望能夠為日志消息提供調試上下文。

這個(應用程序和數據特定的)上下文(基本上是一個字符串)將由每個類單獨構造或檢索,並將傳遞給相應的日志記錄調用,例如

logger.debug(context + ", whatever error message");

所以,我的問題是,在整個應用程序中實現此功能的最佳模式是什么?

我正在考慮讓所有需要支持上下文相關日志記錄的類使用一些適當的方法實現Java接口,例如

public interface ContextSensitive
{
    public String getContext();
    public String setContext();
}

其中setContext()方法對於從具有上下文的對象(例如)firstObject實例化對象(例如)secondObject的情況很有用,但第二個對象沒有。 所以,firstObject也會做類似的事情

secondObject = new SecondObject();
secondObject.setContext(context);

以上是否有意義,或者我應該做些更好的事情?

我一直在考慮的另一種方法是在日志庫周圍編寫一個包裝器來提供這個功能,但是與上面描述的基於ContextSensitive接口的方法相比,我沒有看到這種方法的任何價值。

如果有任何開源項目的例子必須解決同一問題,我將不勝感激。

非常感謝!

我懷疑你正在尋找類似於MDC (映射診斷上下文)的東西,這是log4j,logback和slf4j框架的一個特性。 在方法調用之前,上下文只能設置一次,然后可以配置日志框架以生成包含上下文字段的日志消息。

這是一個跨領域問題的完美例子,所以使用AOP

您要記錄的信息是什么?

如果是用於性能分析,請看一下用Java測量單線程復雜算法的最佳宏基准測試工具/框架是什么? ,列出了一些使用日志記錄機制的工具。

暫無
暫無

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

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