C# 在现有应用程序(windows或web).Net中添加日志的最佳方法
我继承了两个.Net(C#)应用程序,它没有添加任何跟踪或日志记录。该应用程序完成了从创建、读取、更新和删除记录的所有操作。它发送电子邮件并调用web服务 当然,维护它是一场噩梦,因为没有日志记录和try-catch机制(我知道我也不敢相信) 那么,在这个系统中实现日志记录的最佳方式是什么呢。我不能每次调用函数都添加日志行。是否有某种方法可以让动态日志记录基于我提供的方法名进行记录 例如,当调用UpdateOrder()时,我的记录器应该记录日志(调用了UpdateOrder方法)C# 在现有应用程序(windows或web).Net中添加日志的最佳方法,c#,.net,logging,C#,.net,Logging,我继承了两个.Net(C#)应用程序,它没有添加任何跟踪或日志记录。该应用程序完成了从创建、读取、更新和删除记录的所有操作。它发送电子邮件并调用web服务 当然,维护它是一场噩梦,因为没有日志记录和try-catch机制(我知道我也不敢相信) 那么,在这个系统中实现日志记录的最佳方式是什么呢。我不能每次调用函数都添加日志行。是否有某种方法可以让动态日志记录基于我提供的方法名进行记录 例如,当调用UpdateOrder()时,我的记录器应该记录日志(调用了UpdateOrder方法) 谢谢你如果你
谢谢你如果你在.NET,这里有一些东西:
您可以使用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()
{
...
}
使用log4net,它是apachelog4j的.NET版本。该库经过了良好的测试,到处都有程序员使用,而且非常可定制。既然您继承了这段代码,那么仔细阅读并开始添加日志支持并不是一件坏事
自定义设置通过项目中的全局文件进行处理,可以指定日志信息的去向(电子邮件、文本文件、控制台)以及每个日志信息输出源所需的详细程度 你能提供更多关于语言和平台的信息吗?对不起,它们是在.NET3.5、C#、ASP.NetPostSharp中构建的。对于这个问题,NetPostSharp是一个非常好的解决方案。但是,该属性的缺点是必须修改代码。一种更好的(不太侵入性的)方法是在PostSharp中使用MultiCastAttribute,您只需指定一个属性,告诉哪些类型(或方法)受到影响:[assembly:MyOnMethodInvestationAspect(AttributeTargetAssemblys=“mscorlib”,AttributeTargetTypes=“System.Threading.*)]将使postsharp截获对System.Threading.*中任何类的每次调用(请参阅中的详细信息)