Журналы не распечатываются в Application Insights из основного веб-сайта asp.net - PullRequest
1 голос
/ 19 октября 2019

У меня есть ядро ​​asp.net webapi. Он имеет 2 проекта WebApplication1 и WebApplication1.Helper со следующим кодом:

WebApplication1

startup.cs

public class Startup
    {
        public IConfiguration ApiConfiguration { get; set; }
        public Startup(IHostingEnvironment apiEnv)
        {
        }
        public void ConfigureServices(IServiceCollection apiServices)
        {
            var provider = apiServices.BuildServiceProvider();

            var factory = new LoggerFactory()
                   .AddConsole().AddLog4Net().AddApplicationInsights(provider, LogLevel.Information);

            apiServices.AddSingleton(factory);
            apiServices.AddLogging();
            apiServices.AddMvc();
            apiServices.AddOptions();
        }
        public void Configure(IApplicationBuilder apiApp, IHostingEnvironment apiEnv)
        {
            if (apiEnv.IsDevelopment())
            {
                apiApp.UseDeveloperExceptionPage();
            }
            apiApp.UseMvc();
        }
    }

В program.cs я добавил следующую строку:

public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseApplicationInsights() // added this line
                .UseStartup<Startup>()
                .Build();

В HomeController.cs

[Route("api/[controller]")]
    [ApiController]
    public class HomeController : Controller
    {
        private readonly ILog4NetHelper _logHelper = new Log4NetHelper();
        [HttpGet]
        public virtual IActionResult GetData()
        {
            try
            {
                _logHelper.Log4NetMessage("Info", "Start GetData");
                return new OkObjectResult("Your in Home Controller");
            }
            catch (Exception ex)
            {
                _logHelper.Log4NetMessage("Error", "Exception in GetData" + ex.Message);
                throw;
            }
        }
    }

В другом проекте WebApplication1.Helper , существует класс Log4NetHelper.cs

public class Log4NetHelper : ILog4NetHelper
    {
        readonly ILog _log =log4net.LogManager.GetLogger(typeof(Log4NetHelper));
        public void Log4NetMessage(string type,string message)
        {
            string logMessage = message;    
            switch (type)
            {
                case "Info":
                    _log.Info(logMessage);
                    break;
                case "Error":
                    _log.Error(logMessage);
                    break;
                case "Fatal":
                    _log.Fatal(logMessage);
                    break;
                default:
                    _log.Info(logMessage);
                    break;
            }
        }
    }

Я развернул это приложение в Azure как веб-приложение и включил Insights приложения во время развертывания. Однако все сообщения трассировки от .netcore регистрируются, но сообщения, которые я регистрирую как «Start GetData», не регистрируются. Что я тут не так делаю?

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