C# 在ASP.NET-5 | MVC-6中向日志消息中添加附加信息的最佳方式是什么

C# 在ASP.NET-5 | MVC-6中向日志消息中添加附加信息的最佳方式是什么,c#,logging,error-handling,asp.net-core,asp.net-core-mvc,C#,Logging,Error Handling,Asp.net Core,Asp.net Core Mvc,我想在日志消息中添加一些附加信息,但控制器出现异常 标准异常格式为: 异常类型。消息StackTrace 但不清楚什么是异常的源请求当我在电子邮件中收到异常日志时,我不明白是什么请求导致了异常。因此,我想为控制器发出的每个异常添加如下内容: 请求:GET:/api/something?param=1用户:当前用户类型异常。消息StackTrace 我试图从以下位置使用AppExceptionFilterAttribute: 它正在工作,但问题是我有一个每个消息的副本。第一条异常日志消息没有请求的

我想在日志消息中添加一些附加信息,但控制器出现异常

标准异常格式为:

异常类型。消息StackTrace

但不清楚什么是异常的源请求当我在电子邮件中收到异常日志时,我不明白是什么请求导致了异常。因此,我想为控制器发出的每个异常添加如下内容:

请求:GET:/api/something?param=1用户:当前用户类型异常。消息StackTrace

我试图从以下位置使用
AppExceptionFilterAttribute

它正在工作,但问题是我有一个每个消息的副本。第一条异常日志消息没有请求的附加信息,但第二条有

为什么邮件会重复

向控制器异常添加附加信息的最佳方法是什么?

谢谢大家!

更新

以下是我的记录器Appender的配置:

        loggerFactory
            .AddConsole()
            .AddNLog(config =>
            {
                var mailTarget = new MailTarget
                {
                    Name = "Mail",
                    SmtpServer = Configuration["Email:SmtpClientHost"],
                    SmtpAuthentication = SmtpAuthenticationMode.Basic,
                    SmtpUserName = Configuration["Email:SmtpUserName"],
                    SmtpPassword = Configuration["Email:SmtpUserPassword"],
                    From = Configuration["Email:ServiceEmailAddress"],
                    To = Configuration["Email:DevelopersEmails"],
                    Layout = @"${time} ${level} ${message}",
                    Subject = "[${level}] " + Configuration["AppSettings:SiteTitle"],
                };

                config.AddTarget(mailTarget);
                config.LoggingRules.Add(new LoggingRule("*", NLog.LogLevel.Error, mailTarget));
            })
            .MinimumLevel = LogLevel.Information;

您是如何注册您的
AppExceptionFilterAttribute
的?你在哪里记录/发送电子邮件?@DanielJ.G。是的,我已经在
ConfigureService
services.AddTransient()中注册了
AppExceptionFilterAttribute
我从一个
NLog
appender记录电子邮件。@DanielJ.G。我已经更新了我的问题并添加了我的记录器的配置。这个信息有用吗?我想太多了。在过滤器属性中,您只需在上下文中更改异常,但在哪里记录该异常?我想如果你能把这个问题简化成更简单的问题来重现这个问题,那会有所帮助。你是如何注册你的
AppExceptionFilterAttribute
?你在哪里记录/发送电子邮件?@DanielJ.G。是的,我已经在
ConfigureService
services.AddTransient()中注册了
AppExceptionFilterAttribute
我从一个
NLog
appender记录电子邮件。@DanielJ.G。我已经更新了我的问题并添加了我的记录器的配置。这个信息有用吗?我想太多了。在过滤器属性中,您只需在上下文中更改异常,但在哪里记录该异常?我想如果你能把问题简化成更简单的问题来重现这个问题,会有帮助的。
        loggerFactory
            .AddConsole()
            .AddNLog(config =>
            {
                var mailTarget = new MailTarget
                {
                    Name = "Mail",
                    SmtpServer = Configuration["Email:SmtpClientHost"],
                    SmtpAuthentication = SmtpAuthenticationMode.Basic,
                    SmtpUserName = Configuration["Email:SmtpUserName"],
                    SmtpPassword = Configuration["Email:SmtpUserPassword"],
                    From = Configuration["Email:ServiceEmailAddress"],
                    To = Configuration["Email:DevelopersEmails"],
                    Layout = @"${time} ${level} ${message}",
                    Subject = "[${level}] " + Configuration["AppSettings:SiteTitle"],
                };

                config.AddTarget(mailTarget);
                config.LoggingRules.Add(new LoggingRule("*", NLog.LogLevel.Error, mailTarget));
            })
            .MinimumLevel = LogLevel.Information;