将现有应用程序与Seq属性记录集成

时间:2018-12-18 12:54:58

标签: c# .net asp.net-mvc logging seq

我有一个多年开发的MVC 5应用程序(不是.NET Core)。我已经介绍了Seq,因此我可以拥有一个集中的日志,并可以概览应用程序的不同节点。

我已经成功添加了一些属性作为ApplicationName和Machine,但是现在它不如我要记录的信息那么丰富。

在您问我刚刚浏览Google之前,发现了诸如Fody或PostSharp之类的AOP工具,可以简化此过程,但我不知道它是否满足我的需求。

首先,让我们谈谈异常...

当前,我正在使用log4net和Seq适配器信息记录

enter image description here

但是我希望记录传递给崩溃方法的参数(在这种情况下是

 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上的错误,因此我可以轻松地跟踪所有内容

您能帮我解决这个问题吗?

0 个答案:

没有答案