如何通过代码重写 appsettings 设置的接收器属性

How to override, by code, sink properties set by appsettings

提问人:EuroEager 提问时间:10/29/2023 更新时间:11/2/2023 访问量:46

问:

我的 ASP.NET Web Api appsettings.json使用 Serilog.Sinks.Datadog.Logs 指定 Serilog。
这工作正常,但是,arg“apiKey”是以明文形式指定的,这违反了我们公司的标准。
我想通过代码(在组合根目录)覆盖该特定属性。
(代码已从某些机密管理器访问的内容)
有人知道如何做到这一点吗?(C#)

Serilog 数据狗

评论


答:

0赞 Chinmay T 11/2/2023 #1

您可以在创建记录器实例的代码中配置 API 密钥。请参阅下面的示例代码。

我通过将appsettings.json值替换为 Azure Key vault url 来处理这种情况。在这里查看此内容

示例代码:

Log.Logger = new LoggerConfiguration()
    .WriteTo.DatadogLogs("<API_KEY>")
    .CreateLogger();
    
// An example
var position = new { Latitude = 25, Longitude = 134 };
var elapsedMs = 34;

Log.Information("Processed {@Position} in {Elapsed:000} ms.", position, elapsedMs);
Log.CloseAndFlush();

有关更多信息,请查看此处以获取更多信息。