【问题标题】:Logging to Azure Log Analytics custom fields using Serilog使用 Serilog 记录到 Azure Log Analytics 自定义字段
【发布时间】:2020-04-23 16:57:02
【问题描述】:

我是 azure 的新手,也是 .net 的新手,所以这可能是一个菜鸟问题 :) 无论如何,我已经成功地使用此代码 sn-p 登录到 Azure Log Analytics:

var loggerConfig = new LoggerConfiguration().
            Enrich.WithExceptionDetails().
            Enrich.WithApplicationInformation(serviceName).
            MinimumLevel.Debug().
            MinimumLevel.Override("Microsoft", LogEventLevel.Information).
            Enrich.FromLogContext().
            Destructure.ByTransforming<ExpandoObject>(JsonConvert.SerializeObject).
            //Enrich.WithProperty("ErrorMsg_CF","test").
            WriteTo.AzureAnalytics(workspaceId: "MyWorkSpaceID", 
                                   authenticationId: "MyAuthID",
                                   logName: "MyCustomLog_CL",
                                   restrictedToMinimumLevel: LogEventLevel.Debug)

还有:

        Logging.Logger.Initialize(serviceName: "Logging Web Test v1.1");
        Logging.Logger.GetLogger().Log(LogLevel.Debug, "{ErrorMsg_CF}:{TraceID_CF}:{UserName_CF}", errorMsg,traceID,userName);

我在我的 Log Analytics 自定义日志表中创建了 3 个自定义字段:“ErrorMsg_CF”、“TraceID_CF”和“UserName_CF”,我希望能够直接登录到这些自定义字段,或者以某种方式拆分我的errormsg 到这三个自定义字段中。

当我导入文件时,我看到消息存储在“RawData”字段中,通过该字段,我可以使用自定义字段生成器并创建自定义字段,还可以让 Log Analytics 将消息拆分为我的领域。但是,当我通过我的应用程序执行此操作时,消息存储在“LogMEssage_s”字段中,并且似乎无法从该字段创建自定义字段。

那么,有人知道我如何从我的应用程序登录到我的自定义字段吗?

【问题讨论】:

  • 我也遇到了这种情况,你找到方法了吗?

标签: c# serilog azure-log-analytics


【解决方案1】:

默认格式配置是逐行事件记录。可以使用 JSON 提取 ALN,因此这将是以这种方式格式化日志条目的最佳方式。

.WriteTo.DESTINATION(new CompactJsonFormatter(), OTHER OPTIONS HERE)

Serilog formatting

【讨论】:

  • 感谢您的回复。但是,我真的不明白。 WriteTo.AzureAnalytics() 没有 CompactJsonFormatter 的参数(尽管它确实有一个 IFormatProvider 作为参数)。我是不是误会了什么?
  • IFormatProvider 是 json 或其他格式化程序的接口。
  • @jihonsvik - 我正在解决这个问题,因为我的应用遇到了同样的问题 :)
猜你喜欢
  • 2021-09-18
  • 1970-01-01
  • 1970-01-01
  • 2021-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-23
  • 1970-01-01
相关资源
最近更新 更多