使用 Serilog 的 Azure 日志分析停止记录(MVC 核心)
Azure log analytics with Serilog stopped logging (MVC Core)
我有一个非常简单的 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();
}
它收集了一整天的日志,然后显然停止了,因为当我通过日志分析工作区查询过去几个小时时,它 returns 什么也没有。如果我 运行 最近 7 天的查询,我得到 350 条记录的计数,这很有趣。
接收器项目的文档指出默认情况下 logBufferSize 是 25,000 个条目,所以我似乎没有达到这个要求。
对于如何诊断我的日志所在位置或它可能失败的原因的任何建议,我将不胜感激。
提前致谢。
每个日志分析工作区限制为大约 500 个自定义字段。
转到 Azure 门户 > Log Analytics workspace
> advanced settings
> Data
-> Custom fields for the current field count
并检查计数。
您可以使用 Serilog.Sinks.AzureAnalytics
。此接收器接受一个选项参数 flattenObject
,指示在导出到 Azure 时是否应展平对象属性。将其设置为 false 将在 LogProperties
属性.
中保留复杂的对象结构
更多细节,你可以参考这个issue。
我有一个非常简单的 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();
}
它收集了一整天的日志,然后显然停止了,因为当我通过日志分析工作区查询过去几个小时时,它 returns 什么也没有。如果我 运行 最近 7 天的查询,我得到 350 条记录的计数,这很有趣。
接收器项目的文档指出默认情况下 logBufferSize 是 25,000 个条目,所以我似乎没有达到这个要求。
对于如何诊断我的日志所在位置或它可能失败的原因的任何建议,我将不胜感激。
提前致谢。
每个日志分析工作区限制为大约 500 个自定义字段。
转到 Azure 门户 > Log Analytics workspace
> advanced settings
> Data
-> Custom fields for the current field count
并检查计数。
您可以使用 Serilog.Sinks.AzureAnalytics
。此接收器接受一个选项参数 flattenObject
,指示在导出到 Azure 时是否应展平对象属性。将其设置为 false 将在 LogProperties
属性.
更多细节,你可以参考这个issue。