c# - 从作为 Azure Web App 托管的 ASP.NET 5 应用程序进行日志记录

标签 c# azure logging asp.net-core azure-diagnostics

我有一个 ASP.NET 5 Web API,作为 Web 应用程序托管在 Azure 中。我想使用 Azure 诊断记录我的代码中的消息。有多篇文章包括Azure docs这表明一旦启用,它应该像 System.Diagnostics.Trace.WriteLine 一样简单。日志应显示在 LogsFiles/Application 下以及 Azure 的日志流中。

我为网络应用程序启用了应用程序日志记录:

enter image description here

但是以下调用不会产生日志:

System.Diagnostics.Trace.TraceError("TEST");
System.Diagnostics.Trace.TraceInformation("TEST");
System.Diagnostics.Trace.TraceWarning("TEST");
System.Diagnostics.Trace.WriteLine("TEST");

我尝试手动定义 TRACE 符号,但没有成功:

enter image description here

我还尝试使用新的 Microsoft.Extensions.Logging 框架并使用 ILogger.Log API,但再次没有任何结果:

public void Configure(IApplicationBuilder app, 
                      IHostingEnvironment env, 
                      ILoggerFactory loggerFactory)
{
    loggerFactory.MinimumLevel = LogLevel.Debug;

    var sourceSwitch = new SourceSwitch("Sandbox.AspNet5.ApiApp-Demo");
    sourceSwitch.Level = SourceLevels.All;
    loggerFactory.AddTraceSource(sourceSwitch, 
                                 new ConsoleTraceListener(false));
    loggerFactory.AddTraceSource(sourceSwitch, 
                                 new EventLogTraceListener("Application"));
}

关于我做错了什么有什么想法吗?

最佳答案

如果您查看 web.config,它可能有 stdoutLogEnabled="false"。如果将其设置为 true,则写入标准输出的任何内容都将写入文件。 stdoutLogFile 决定它的去向,默认情况下位于 d:\home\logfiles 下。

现在您需要确保您的日志记录实际上已发送到标准输出。执行 Console.WriteLine 肯定会起作用。我认为也可以通过 startup.cs 中的 ILoggerFactory 进行配置,使日志输出到 stdout。

关于c# - 从作为 Azure Web App 托管的 ASP.NET 5 应用程序进行日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34866674/

相关文章:

azure - Azure 租户、Azure Directory 和 Azure Active Directory 之间有什么区别?

macos - 使用 FreeTDS 连接到 MS SQL (Azure)

maven - 如何将 Maven 日志中的测试运行次数与源代码匹配?

c++ - 使用 liblttng 在 C++ 中自动插入跟踪点语句

c# - 使用 StreamContent 时如何正确处理流

c# - 如何重构此 ForEach(..) 代码以使用 Parallel.ForEach(..)?

azure - 新的Azure网站,通过FTP上传内容,并得到 "nothing here yet"消息,很困惑

logging - ELK堆栈-如何将所有旧日志回填到elasticsearch中?

c# - 关于 try-catch block 的思考

c# - 在 C# 中从 .dot 文件创建图像