在现有应用程序(Windows或Web).Net中添加日志记录的最佳方法

时间:2009-05-29 23:53:15

标签: c# .net logging

我继承了几个.Net(C#)应用程序,它没有添加任何跟踪或日志记录。此应用程序执行创建,读取,更新和删除记录等所有操作。它发送电子邮件并调用Web服务。

当然,维护它是一场噩梦,因为没有记录和没有尝试捕获机制(我知道我也不相信)。

那么在这个系统中实现日志记录的最佳方法是什么。我不能去每个函数调用并添加日志记录行。有没有办法让我可以根据我提供的方法名称进行动态记录。

即。当调用UpdateOrder()时,我的记录器应该记录(调用更新的订单方法)

谢谢

3 个答案:

答案 0 :(得分:2)

使用log4net,它是Apache log4j的.NET版本。该库经过了充分测试,被各地的程序员使用,并且可以进行定制。由于您继承了此代码,因此通过它并开始添加日志记录支持并不是一件坏事。

自定义设置通过项目中的全局文件进行处理,可以指定日志记录信息的位置(通过电子邮件发送,文本文件,控制台)以及每个输出源的日志记录信息需要多大程度的详细程度。

答案 1 :(得分:1)

如果你在.NET中,那就是以下内容:

http://www.codeproject.com/KB/dotnet/LoggerByHernandson.aspx

答案 2 :(得分:1)

您可以使用像Postsharp这样的AOP框架来创建特定属性来记录方法调用:

public class TraceAttribute : OnMethodBoundaryAspect 
{ 
  public override void OnEntry( MethodExecutionEventArgs eventArgs) 
  { Trace.TraceInformation("Entering {0}.", eventArgs.Method);  } 

  public override void OnExit( MethodExecutionEventArgs eventArgs) 
  { Trace.TraceInformation("Leaving {0}.", eventArgs.Method);   } 
}

(此代码是主页中的示例)

然后,您可以将此属性应用于要记录的方法:

[Trace]
public void UpdateOrder()
{
    ...
}