You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Framework Web API通过web.config配置Serilog对接Dynatrace

解决.NET Framework Web API中Serilog输出到Dynatrace的web.config配置问题

针对你的场景,以下是修正后的web.config配置方案及关键注意事项:

正确的web.config配置

<appSettings>
  <!-- Serilog基础日志级别配置 -->
  <add key="serilog:minimum-level" value="Information" />
  
  <!-- 引入Dynatrace日志Sink -->
  <add key="serilog:using:Dynatrace" value="Serilog.Sinks.Dynatrace" />
  
  <!-- Dynatrace核心配置(注意参数名首字母大写) -->
  <add key="serilog:write-to:Dynatrace.IngestUrl" value="https://pppp.live.dynatrace.com/api/v2/logs/ingest" />
  <add key="serilog:write-to:Dynatrace.AccessToken" value="aaaaaaaaaaaaaaaaaaaa" />
  
  <!-- 可选:优化批量提交参数,减少请求频率 -->
  <add key="serilog:write-to:Dynatrace.BatchPostingLimit" value="100" />
  <add key="serilog:write-to:Dynatrace.Period" value="00:00:10" />
  
  <!-- 可选:自定义日志输出模板 -->
  <add key="serilog:write-to:Dynatrace.OutputTemplate" value="{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}" />
</appSettings>

核心问题说明

你之前的配置失效,核心原因是web.config与appsettings.json的配置参数命名规则差异:

  • 在appsettings.json中,Serilog支持驼峰式参数名(如accessToken);
  • 但在web.config的appSettings里,必须与Dynatrace Sink的C#属性名保持一致(首字母大写,如AccessToken、IngestUrl)。

额外注意事项

  • 确保已安装适配.NET Framework的NuGet包:Serilog.Sinks.Dynatrace和Serilog.Web.Classic,版本不兼容会导致配置无法被识别;
  • 验证Dynatrace的AccessToken拥有日志 ingest 权限,且IngestUrl对应的环境地址正确;
  • 确认Serilog初始化代码是从web.config读取配置的,典型初始化代码如下:
Log.Logger = new LoggerConfiguration()
    .ReadFrom.AppSettings()
    .CreateLogger();

内容的提问来源于stack exchange,提问作者user3417479

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 02:17:42