爲了清楚起見,我的'aspect'的含義是應用程序函數的一個橫向因素,而不是像面向方面編程那樣攔截所有的方法調用。「基於Aspect的追蹤」有什麼優點嗎?
我剛剛發現了.NET跟蹤基礎結構的美妙之處,尤其是TraceSource
對象。就像我在這裏的noob,我給每個類別自己的TraceSource,跟蹤方法開始和結束,錯誤等。
但是,現在,我認爲每個方面一個TraceSource
是更好。例如。我有一個應用程序,可以導入停車場內的車輛行駛記錄,計算停車費用,然後將消息發佈到計費系統(WHMCS)。
我想我應該寧願有一類與一羣靜態TraceSource
性質的,就像這樣:
public static class Traces
{
static Traces()
{
VehicleMovements = new TraceSource("VehicleMovements", SourceLevels.All);
Pricing = new TraceSource("Pricing", SourceLevels.All);
Calculation = new TraceSource("Calculation", SourceLevels.All);
Billing = new TraceSource("Billing", SourceLevels.All);
}
public static TraceSource VehicleMovements { get; set; }
public static TraceSource Pricing { get; set; }
public static TraceSource Calculation { get; set; }
public static TraceSource Billing { get; set; }
}
這樣一來,我可以做,例如一個Traces.Pricing.VehicleMovements ("Terminal Id not configured");
我發現這種情況,並有一個更好的分組和更有凝聚力的日誌或其他輸出。
這是個好主意嗎?對於獎金,一些指向追蹤策略和模式的資源將非常好,謝謝。
跟蹤可能是一個有缺陷的API,但它始終存在。您可以使用NLog和log4net的形式添加更精細的組件,但Trace始終存在,即使只是控制檯或文本文件。 – ProfK
我們處於暴力協議中:-),我已經在上面提及了這一點。 – MatthewMartin