在我的Web Api应用程序中,我具有控制器:
[Route("api/[controller]")]
public class ValuesController : Controller
{
// GET api/values
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/values/5
[HttpGet("{id}")]
public string Get(int id)
{
System.Diagnostics.Trace.TraceInformation("in get...");
return "value";
}
}
当我发布日志时,我希望能够在Azure上看到日志“ in get ...”。在Azure上,在App Service Logs
中,打开Application Logging (Filesystem)
并将级别设置为Information
。在Log Stream
中,当我转到方法的url时,我在日志中看到:
正在连接... 2020-02-09T06:07:38欢迎使用,您现在已连接到 日志流服务。默认超时为2小时。改变 应用设置SCM_LOGSTREAM_TIMEOUT超时(以秒为单位)。 2020-02-09 06:08:07.158 +00:00 [信息] Microsoft.AspNetCore.Hosting.Internal.WebHost:请求启动 HTTP / 1.1 GET http://testapi20200208104448.azurewebsites.net/api/values/5 2020-02-09 06:08:07.159 +00:00 [信息] Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker:执行 操作方法TestApi.Controllers.ValuesController.Get(TestApi)与 参数(5)-ModelState有效2020-02-09 06:08:07.160 +00:00 [信息] Microsoft.AspNetCore.Mvc.Internal.ObjectResultExecutor: 执行ObjectResult,写入值 Microsoft.AspNetCore.Mvc.ControllerContext。
但是我看不到我的日志“ ...”
答案 0 :(得分:2)
这是.NET核心的known issue(但对于.NET框架,它可以很好地工作)。
作为.NET核心Web应用程序的解决方法,建议您使用ILogger
,它可以将消息写入应用程序日志。
在Startup.cs
-> Configure
方法中,重新编写Configure方法,如下所示:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
//your other code
//add the following 2 lines of code.
loggerFactory.AddConsole();
loggerFactory.AddDebug();
app.UseStaticFiles();
//your other code
}
然后在ValuesController
中
public class ValuesController : Controller
{
private readonly ILogger _logger;
public ValuesController(ILoggerFactory loggerFactory)
{
_logger = loggerFactory.CreateLogger<ValuesController>();
}
// GET api/values
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/values/5
[HttpGet("{id}")]
public string Get(int id)
{
//System.Diagnostics.Trace.TraceInformation("in get...");
//use ILogger here.
_logger.LogInformation("in get...");
return "value";
}
}
答案 1 :(得分:0)
Ivan的答案在aspnetcore 3.1上对我来说并不完全有效,但它使我引向了这篇文章,该文章为我提供了我需要的所有信息:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging/?view=aspnetcore-3.1