如何在 .Net 框架中长时间读取和写入 Azure 中的控制台?

Posted

技术标签:

【中文标题】如何在 .Net 框架中长时间读取和写入 Azure 中的控制台?【英文标题】:How to I read and write to console in Azure in .Net framework over a long period of time? 【发布时间】:2021-11-18 02:44:16 【问题描述】:

我们有一个 .net framework 4.5.1 MVC web 应用程序。我们希望在应用程序运行时将信息记录到控制台。显然,在我的本地计算机上运行应用程序时,我可以看到输出窗口和我的日志。但是当它部署到 Azure 时呢?如何查看我的日志?我应该在 Azure 中的哪个位置登录(或者我有哪些选择)?

我试过了:

日志流,但这让我可以阅读 12 小时的日志,然后自动关闭。我需要查看很久以前的日志。 Azure App Insights,但我在其中找不到任何日志信息。 日志查询,它向我展示了一个类似 SQL 工作室的界面。但是它说没有日志,有时它是灰色的,我无法输入查询,而不是它无论如何都显示。 使用这些日志记录工具:
Console.WriteLine("???? Console.WriteLine");
System.Diagnostics.Trace.WriteLine("???? Trace.WriteLine");
System.Diagnostics.Trace.TraceInformation("???? Trace.TraceInformation");
System.Diagnostics.Trace.TraceWarning("???? Trace.TraceWarning");
System.Diagnostics.Trace.TraceError("???? Trace.TraceError");

但是除了日志流,我在任何地方都找不到我的日志,这不是我想要的,因为它只能工作 12 小时。

【问题讨论】:

使用 Serilog 和/或 M.E.L.。不要写入标准输出进行日志记录。是的,您可以在 .NET Framework 4 中使用 MEL。但您应该先更新到 .NET Framework 4.8。为什么你还在运行 4.5.1? 4.5.1 已过时且不受支持 【参考方案1】:

我尝试在本地复制,我可以通过以下方式查看我的日志:

。 Enable diagnostics

.Download Logs from Kudu console

从诊断设置中,我启用了以下功能以查看日志

从应用洞察我们可以看到我们应用的以下数据

而且,使用 KuduConsole 我们可以下载日志文件。从应用服务>高级工具>点击GO

打开kudu后转到**Debug console**,从这里我们可以从左侧下载我们的日志,如图所示:

但是我在任何地方都找不到我的日志,除了在日志流中,这不是 我正在寻找什么,因为它只能工作 12 小时。

也感谢Amit Apple 发布您的suggestion 作为帮助其他社区成员的答案。

“您可以通过将名为DIAGNOSTICS_TEXTTRACETURNOFFPERIOD应用程序设置 设置为大于12 * 60 * 60 * 1000 的值(以毫秒为单位的12 小时)来实现此目的。” 如GItHub中所述

更多信息请参考这个 SO 线程How can I view console or trace output in an azure app service? Console.WriteLine or Trace.TraceError

【讨论】:

以上是关于如何在 .Net 框架中长时间读取和写入 Azure 中的控制台?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 和 ASP.NET MVC 中读取/写入 cookie

如何在 C# .NET 中保持 TCP 连接打开并执行多次写入/读取?

处理 ASP.NET 中长时间运行的进程

Protobuf-net - 流不支持并发 IO 读取或写入操作

如何使用 .Net 直接写入磁盘?

.Net 中的字典是不是可能在并行读取和写入时导致死锁?