首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >outputTemplate参数在Serilog中的应用研究

问outputTemplate参数在Serilog中的应用研究
EN

Stack Overflow用户
提问于 2019-07-24 13:10:40
回答 1查看 1K关注 0票数 5

我目前正在使用Serilog实现Azure应用程序Insight日志记录,除了在我的Serilog配置中使用输出模板外,它工作得很好。当将Serilog数据传递给Application时,模板似乎被忽略了。

我在appsetting.json中的serilog配置:

代码语言:javascript
复制
"Serilog": {
    "Using": [ "Serilog.Sinks.ApplicationInsights" ],
    "MinimumLevel": "Debug",
    "WriteTo": [
      { "Name": "Console" },
      {
        "Name": "RollingFile",
        "Args": {
          "pathFormat": "logs\\log-{Date}.txt",
          "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] {Message}{NewLine}{Exception}"
        }
      },
      {
        "Name": "ApplicationInsights",
        "Args": {
          "restrictedToMinimumLevel": "Information",
          "telemetryConverter": "Serilog.Sinks.ApplicationInsights.Sinks.ApplicationInsights.TelemetryConverters.TraceTelemetryConverter, Serilog.Sinks.ApplicationInsights",
          "outputTemplate": "Test Template - {Message}"
        }
      }
    ],
    "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
    "Properties": {
      "Application": "app"
    }
  },

日志记录语句:

logger.Error("Test Serilog Error For AI - " + DateTime.Now);

应用程序洞察力中的输出:

​

​

这是为应用程序洞察力定制错误信息的正确方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-25 07:52:11

在检查了源代码塞利洛-水槽.应用见解之后,您会发现它没有从appsetting.json读取outputTemplate。

对于解决方法,您可以实现自定义TemplateTraceTelemetryConverter。

  1. TemplateTraceTelemetryConverter 公共类TemplateTraceTelemetryConverter : TraceTelemetryConverter {公共覆盖IEnumerable转换( LogEvent logEvent,IFormatProvider formatProvider) { var templateParser =新MessageTemplateParser();var Template = templateParser.Parse($"Test template - {logEvent.MessageTemplate.Text}");LogEvent newLogEvent =新LogEvent(logEvent.Timestamp,logEvent.Level,logEvent.Exception,template,logEvent.Timestamp)(p logEvent.Exception(,));返回base.Convert(newLogEvent,formatProvider);}
  2. 使用TemplateTraceTelemetryConverter "Serilog":{“使用”:"Serilog.Sinks.ApplicationInsights","MinimumLevel":"Debug","WriteTo":[{“名称”:“控制台”,"Args":{ "outputTemplate":“测试模板-{消息}”} },{“名称”:"RollingFile","Args":{ "pathFormat":“log\log-{Date}.txt”,"outputTemplate":“{时间戳:yyyy HH:mm:ss.fff zzz} {Level} {NewLine}{NewLine}{NewLine}”} },{“名称”:"ApplicationInsights","Args":{ "restrictedToMinimumLevel":“错误”,“"YourProjectNamespace.TemplateTraceTelemetryConverter,”:telemetryConverter YourProjectNamespace //"outputTemplate":“outputTemplate {Message}”}},"FromLogContext“、"WithMachineName”、"WithThreadId“、"Properties":{”应用程序“:"app”}}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57183780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档