c# - 使用 Serilog 的 Azure 日志分析停止了日志记录(MVC 核心)
问题描述
我有一个非常简单的 MVC Core 2.2 应用程序,它利用 Serilog 和 serilog-sinks-azure-analytics ( https://github.com/saleem-mirza/serilog-sinks-azure-analytics ) 将应用程序日志通过管道传输到 Azure 日志分析工作区。Program.cs 中的实现如下所示
public static void Main(string[] args)
{
var workspaceId = Configuration["AzureLogging:workspaceId"];
var authenticationId = Configuration["AzureLogging:authenticationId"];
var logName = Configuration["AzureLogging:logName"];
//Configure Serilog to add Azure Logging
Log.Logger = new LoggerConfiguration()
.WriteTo.AzureAnalytics(
workspaceId: workspaceId,
authenticationId: authenticationId,
logName: logName
)
.MinimumLevel.Information()
.MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
.MinimumLevel.Override("System", LogEventLevel.Warning)
.CreateLogger();
CreateWebHostBuilder(args).Build().Run();
}
它收集了一整天的日志,然后显然停止了,因为当我通过日志分析工作区查询最后几个小时时,它什么也没返回。如果我运行过去 7 天的查询,我会得到 350 条记录,这很有趣。
sink 项目的文档指出 logBufferSize 默认为 25,000 个条目,因此我似乎没有达到这个要求。
对于如何诊断我的日志在哪里或为什么它可能会失败的任何建议,我将不胜感激。
提前致谢。
解决方案
每个Log Analytics 工作区限制为大约 500 个自定义字段。
转到 Azure 门户 > Log Analytics workspace
> advanced settings
> Data
->Custom fields for the current field count
并检查计数。
你可以使用 Serilog.Sinks.AzureAnalytics
. 此接收器接受一个选项参数,flattenObject
指示在导出到 Azure 时是否应展平对象属性。将其设置为 false 将在LogProperties
属性中保留复杂的对象结构。
有关更多详细信息,您可以参考此问题。
推荐阅读
- c# - 如何在 WPF 中使用 MultiBinding
- ubuntu - Ubuntu 18 VS Code 错误 Enoent:没有这样的目录,lstat'/snap/code'
- python - mininet 和 scapy 中的多线程或多处理
- git - Ubuntu 14.04 git https 服务于 nginx 问题
- javascript - 为什么我要在要循环的数组之外获取返回元素?
- dart - Iterable.generate:可迭代
> 抛出异常 - php - 编辑期间 PHP 更好的语法检查
- visual-studio-extensions - 构建 Visual Studio 扩展(VS 2017):部署到 VS 的实验实例需要几秒钟
- vue.js - 动态图像绑定vue
- pine-script - 买卖信号执行不正常