我继承了几个.Net(C#)应用程序,它没有添加任何跟踪或日志记录。此应用程序执行创建,读取,更新和删除记录等所有操作。它发送电子邮件并调用Web服务。
当然,维护它是一场噩梦,因为没有记录和没有尝试捕获机制(我知道我也不相信)。
那么在这个系统中实现日志记录的最佳方法是什么。我不能去每个函数调用并添加日志记录行。有没有办法让我可以根据我提供的方法名称进行动态记录。
即。当调用UpdateOrder()时,我的记录器应该记录(调用更新的订单方法)
谢谢
答案 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()
{
...
}