我有一个多年开发的MVC 5应用程序(不是.NET Core)。我已经介绍了Seq,因此我可以拥有一个集中的日志,并可以概览应用程序的不同节点。
我已经成功添加了一些属性作为ApplicationName和Machine,但是现在它不如我要记录的信息那么丰富。
在您问我刚刚浏览Google之前,发现了诸如Fody或PostSharp之类的AOP工具,可以简化此过程,但我不知道它是否满足我的需求。
首先,让我们谈谈异常...
当前,我正在使用log4net和Seq适配器信息记录
但是我希望记录传递给崩溃方法的参数(在这种情况下是
private void setStato(int idPolizza, int statoRinnovo)
{
....omiss....
}
现在,在这种情况下,我可以在方法开始时或有异常的情况下,将日志放在idPolizza,statoRinnovo的setStato上,但这手动意味着将所有catch
放入日志信息
我在MethodBoundaryAspect上看到可以编写此Aspect
public sealed class HelloWorldAspect : OnMethodBoundaryAspect
{
public override void OnEntry(MethodExecutionArgs arg)
{
Console.WriteLine("Entered method: " + arg.Method.Name);
}
public override void OnExit(MethodExecutionArgs arg)
{
Console.WriteLine("Exited method: " + arg.Method.Name);
}
public override void OnException(MethodExecutionArgs args)
{
Console.WriteLine("Exception: " + args.Exception.Message);
}
}
并在OnException方法上记录此类信息,但这足够了吗?这样做是否必须将每个catch
中的log.Error()
中删除,以避免重复?
在这种情况下,您采用什么方法?
另一个问题通常与日志有关。当用户执行操作时,我想记录一些上下文信息,例如Username / IP /和一些与初始调用相关的参数(例如,编辑以下客户位置,存储ID)以及所有过程,以便我知道用户FOO发生在customerId = 5上的错误,因此我可以轻松地跟踪所有内容
您能帮我解决这个问题吗?