ASP.NET Core + ApplicationInsights регистрирует ошибки как трассировку - PullRequest
0 голосов
/ 31 октября 2018

Я использую Microsoft.ApplicationInsights.AspNetCore (https://www.nuget.org/packages/Microsoft.ApplicationInsights.AspNetCore).

Я включил понимание приложения, добавив .UseApplicationInsights () в Programs.cs и в мой класс запуска:

    loggerFactory.AddApplicationInsights(app.ApplicationServices);

Это все работает нормально, я могу видеть запросы в приложениях, но когда я пытаюсь записать ошибку (например, в моем контроллере):

        _logger.LogError("My Error Log");
        _logger.LogError("Test", new Exception("Test"));

Оба регистрируются как события трассировки, а не как исключения в понимании приложения.

Как мне сделать так, чтобы оно регистрировалось как исключение?

Ответы [ 2 ]

0 голосов
/ 17 июня 2019

Поскольку Microsoft.ApplicationInsights.AspNet v2.7 вопрос и принятый ответ устарели, так как вызов AddApplicationInsights на ILoggerFactory теперь устарел.

Пожалуйста, обратитесь к официальным документам .

Суть из документов:

  1. ApplicationInsightsLoggerProvider включено по умолчанию.
  2. Захваченные типы журналов можно настроить в appsettings.json (или программно, если вам это действительно нужно)
    "Logging": {
        "LogLevel": {
            "Default": "Warning"
        },
        "ApplicationInsights": {
            "LogLevel": {
                "Default": "Error"
            }
        }
    }
0 голосов
/ 31 октября 2018

Если вы хотите зарегистрировать ошибку как Исключение в обзорах приложения, эту строку кода _logger.LogError("Test", new Exception("Test")); следует изменить.

Измените его на _logger.LogError(new Exception(), "test");, что означает, что new Exception() должен быть первым параметром.

И вы можете добавить приложение Insights SDK, щелкнув правой кнопкой мыши по своему проекту -> Добавить -> Application Insights Telemetry, что очень полезно, когда вы делаете что-то автоматически (например, добавляя .UseApplicationInsights() in Programs.cs): enter image description here

Я также публикую свои тестовые шаги:

1.Дополнение SDK приложения Insights, как указано выше

2.Добавьте loggerFactory.AddApplicationInsights(app.ApplicationServices,LogLevel.Information); в Startup.cs -> Configure () метод, код как показано ниже:

            public void Configure(IApplicationBuilder app, IHostingEnvironment env,ILoggerFactory loggerFactory)
            {
                if (env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                }
                else
                {
                    app.UseExceptionHandler("/Error");
                    app.UseHsts();
                }

                app.UseHttpsRedirection();
                app.UseStaticFiles();
                app.UseCookiePolicy();

                app.UseMvc();

                //Add this line of code
                loggerFactory.AddApplicationInsights(app.ApplicationServices,LogLevel.Information);
            }

3. Затем где-то вы хотите записать ошибку:

        public class AboutModel : PageModel
        {
            private ILogger _logger;

            public AboutModel(ILogger<AboutModel> logger)
            {
                _logger = logger;
            }

            public string Message { get; set; }

            public void OnGet()
            {
                _logger.LogInformation("it is just a test herexxxx");

               //Only this format can log as exception
                _logger.LogError(new Exception(), "it is a new Exceptionxxxx");

               //it will log as trace
                _logger.LogError("error logs xxx");
                Message = "Your application description page.";
            }
        }

4. Результат теста, как показано ниже: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...