我有一个Azure WebApp,它同时启用了应用程序日志记录(文件系统)和(Blob)。我在blob和Log Stream中都检索了一些数据,但这似乎是一些自动化的数据(传入请求,SQL查询,生命周期事件等),但是我看不到System.Diagnostics.Trace.TraceInformation
调用在任何地方。
在本地运行应用程序时,我会在输出窗口中看到这些日志,但在Azure上却看不到。
我缺少某些设置吗?
答案 0 :(得分:0)
在asp.net核心Web应用程序中,我们使用ILogger
进行日志记录。更多详细信息,请参见here。
您可以在azure门户中进行设置,只需在您的项目中添加一些代码,示例如下:
在Startup.cs-> Configure方法中,该方法如下所示(在此处使用ILoggerFactory):
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory logger)
{
if (env.IsDevelopment())
{
app.UseBrowserLink();
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
//add the following two lines of code
logger.AddConsole();
logger.AddDebug();
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
然后在controller.cs中:
public class HomeController : Controller
{
private readonly ILogger _logger;
public HomeController(ILoggerFactory loggerFactory)
{
_logger = loggerFactory.CreateLogger<HomeController>();
}
public IActionResult Index()
{
return View();
}
public IActionResult Contact()
{
ViewData["Message"] = "Your contact page.";
//Trace.TraceInformation("TraceInformation ---this is from contact page.....");
_logger.LogInformation("ILogger --- this is from contact page!!!!");
return View();
}
//other code
}
发布到天蓝色后,可以在Log Stream和blob中看到ILogger记录的日志: