为了清楚起见,我对“方面”的含义是应用程序功能的水平因素,而不是像面向方面编程中那样拦截所有方法调用。
我刚刚发现了 .NET Trace 基础结构的美妙之处,尤其是TraceSource
对象。就像我这个菜鸟一样,我给每个类它自己的 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");
在我发现该场景的任何课程中,并有一个更好的分组和更有凝聚力的日志或其他输出。
这是一个好主意吗?作为奖励,一些关于跟踪策略和模式的资源的指针会很棒,谢谢。