C# Azure应用程序服务跟踪

C# Azure应用程序服务跟踪,c#,azure,azure-web-app-service,azure-app-service-plans,.net-trace,C#,Azure,Azure Web App Service,Azure App Service Plans,.net Trace,我们在Azure app Service中部署了一个应用程序,它具有以下日志记录配置: 如果我们没有在System.Diagnostics命名空间(System.Diagnostics.Trace/System.Diagnostics.TraceSource)中使用任何方法,那么此设置的相关性是什么?我们注意到,当级别设置为“Verbose”时,系统性能较差,而当级别设置为“Warning”时,性能有所提高。但是,我们没有使用 System.Diagnostics.Trace.Trace信息或

我们在Azure app Service中部署了一个应用程序,它具有以下日志记录配置:

如果我们没有在System.Diagnostics命名空间(System.Diagnostics.Trace/System.Diagnostics.TraceSource)中使用任何方法,那么此设置的相关性是什么?我们注意到,当级别设置为“Verbose”时,系统性能较差,而当级别设置为“Warning”时,性能有所提高。但是,我们没有使用

System.Diagnostics.Trace.Trace信息或 System.Diagnostics.Trace.WriteLine


编写跟踪。

请记住,当请求传入时,执行的不仅仅是代码

即使您在应用程序中未使用System.Diagnostics.Trace命名空间,也有可能存在某些NuGet包或其他可能存在的依赖项

除此之外,托管您的应用程序的服务器代码将此输入作为一个标志,以启动必要的进程来侦听和捕获跟踪事件,这本身就与您的应用程序争夺资源

您应该检查blob存储中的输出文件,以了解详细级别生成的数据量


除非您正在收集信息以诊断问题,否则不应将日志记录设置为详细。对于生产工作负载,您通常希望将其设置为仅错误。

请记住,当请求传入时,您的代码并不是唯一执行的东西

即使您在应用程序中未使用System.Diagnostics.Trace命名空间,也有可能存在某些NuGet包或其他可能存在的依赖项

除此之外,托管您的应用程序的服务器代码将此输入作为一个标志,以启动必要的进程来侦听和捕获跟踪事件,这本身就与您的应用程序争夺资源

您应该检查blob存储中的输出文件,以了解详细级别生成的数据量


除非您正在收集信息以诊断问题,否则不应将日志记录设置为详细。对于生产工作负载,您通常只希望将其设置为错误。

正如其他人所说,即使您在代码中不调用跟踪方法,底层组件也可能会这样做。如果启用了跟踪,随着时间的推移,它可能会导致内存增加和性能下降

有关详细信息,请参见:

在启用跟踪的生产环境中运行

ASP.NET跟踪是对应用程序进行故障排除的强大功能,但在生产环境中不应将其保留为打开状态。ASP.NET跟踪使用数据结构(如DataTables)来存储跟踪信息,随着时间的推移,这些数据结构可能会导致内存过高,从而导致OOM

更多信息请参见帖子


正如Byron Tardif在他的回复中提到的,如果可能,您可以在生产环境中将级别设置为error。

正如其他人所说,即使您在代码中不调用跟踪方法,底层组件也可以这样做。如果启用了跟踪,随着时间的推移,它可能会导致内存增加和性能下降

有关详细信息,请参见:

在启用跟踪的生产环境中运行

ASP.NET跟踪是对应用程序进行故障排除的强大功能,但在生产环境中不应将其保留为打开状态。ASP.NET跟踪使用数据结构(如DataTables)来存储跟踪信息,随着时间的推移,这些数据结构可能会导致内存过高,从而导致OOM

更多信息请参见帖子


正如Byron Tardif在回复中提到的那样,如果可能,您可以在生产环境中将级别设置为error。

您可以不调用其中任何一个,但底层组件可以。例如,如果您在Api上启用跟踪记录,Web Api也可以发出跟踪。看见当然,WebAPI2只是一个例子。您可能不会调用其中任何一个,但底层组件可以。例如,如果您在Api上启用跟踪记录,Web Api也可以发出跟踪。看见当然,WebAPI2只是一个例子。