Azure WebApp-System.Diagnostics.Trace.TraceInformation不在任何地方显示

时间:2018-11-23 22:57:29

标签: asp.net-mvc azure asp.net-core

我有一个Azure WebApp,它同时启用了应用程序日志记录(文件系统)和(Blob)。我在blob和Log Stream中都检索了一些数据,但这似乎是一些自动化的数据(传入请求,SQL查询,生命周期事件等),但是我看不到System.Diagnostics.Trace.TraceInformation调用在任何地方。

在本地运行应用程序时,我会在输出窗口中看到这些日志,但在Azure上却看不到。

我缺少某些设置吗?

azure portal screenshot

1 个答案:

答案 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记录的日志:

enter image description here