使用Serilog的Azure日志分析停止了日志记录(MVC Core)

时间:2019-12-16 20:28:44

标签: c# azure asp.net-core-mvc serilog azure-log-analytics

我有一个非常简单的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条记录,这很有趣。

接收器项目的文档指出,默认情况下,logBu​​fferSize为25,000个条目,因此似乎无法达到目的。

对于如何诊断我的日志或日志为什么失败的任何建议,我将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:0)

每个日志分析工作区最多只能有500个自定义字段

转到Azure门户> <security-constraint> <display-name>Admin Constraint</display-name> <web-resource-collection> <web-resource-name>Admin</web-resource-name> <url-pattern>/console/*</url-pattern> <http-method>GET</http-method> <http-method>POST</http-method> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> </auth-constraint> </security-constraint> <security-role> <description>Console Admin</description> <role-name>admin</role-name> </security-role> <login-config> <auth-method>FORM</auth-method> <realm-name>console-realm</realm-name> <form-login-config> <form-login-page>/login.xhtml</form-login-page> <form-error-page>/loginError.xhtml</form-error-page> </form-login-config> </login-config> > Log Analytics workspace> advanced settings-> Data,然后检查计数。

您可以使用Serilog.Sinks.AzureAnalytics。该接收器接受选项参数Custom fields for the current field count,该参数指示在导出到Azure时是否应展平对象属性。将其设置为false将在flattenObject属性中保留复杂的对象结构。

有关更多详细信息,您可以参考此issue

相关问题