У меня есть ядро 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», не регистрируются. Что я тут не так делаю?