【发布时间】:2020-12-30 16:52:27
【问题描述】:
我们在使用 NUnit、Serilog 和 Datadog 时遇到问题。
我们的配置
我们正在合作:
- .NET Core 3.1 (Visual Studio 16.5.4)
- NUnit + NUnit3TestAdapter
- Serilog + Serilog.Sinks.Datadog.Logs
所有包都是 NuGet 最新的。
Serilog 配置
这是我们正在使用的 Serilog 配置:
DatadogConfiguration datadogConfiguration = new DatadogConfiguration()
{
Url = "https://http-intake.logs.datadoghq.eu",
Port = 443,
UseSSL = true,
UseTCP = false
};
ServiceProvider = new ServiceCollection()
.AddSingleton<IMyService, MyService>()
.AddLogging(configure => configure.AddSerilog(
new LoggerConfiguration()
.MinimumLevel.Verbose()
.Enrich.WithMachineName()
.Enrich.WithProcessName()
.Enrich.WithProcessId()
.Enrich.WithThreadName()
.Enrich.WithThreadId()
.Enrich.WithProperty("Application", "Serilog Test Application")
.Enrich.WithExceptionDetails()
.WriteTo.Debug(
outputTemplate: "[{Timestamp:o} {Level:u3}] [{MachineName}] [{ProcessName}:{ProcessId}] [{ThreadName}:{ThreadId}] [{Application}] [{SourceContext}] {Message:lj}{Exception}{Properties:j}{NewLine}")
.WriteTo.File(
path: "D:\\Temp\\LogFile.txt",
outputTemplate: "[{Timestamp:o} {Level:u3}] [{MachineName}] [{ProcessName}:{ProcessId}] [{ThreadName}:{ThreadId}] [{Application}] [{SourceContext}] {Message:lj}{Exception}{Properties:j}{NewLine}")
.WriteTo.DatadogLogs(
"API_KEY",
source: "csharp",
service: "test service (by code)",
host: "Serilog test application",
tags: new string[] { "TAG_1:VALUE_1", "TAG_2:VALUE_2" },
configuration: datadogConfiguration)
.CreateLogger()))
.BuildServiceProvider();
测试
我们正在调试运行(Visual Studio 中的 F5 键)和 NUnit 测试环境(Visual Studio 中)下测试此配置。
问题
我们面临的问题是,在调试运行时一切正常:
- 日志正确到达 Visual Studio 调试输出。
- 日志正确到达存档。
- 日志正确到达 Datadog。
当我们在 NUnit 环境中运行这段代码时:
- 日志正确到达 Visual Studio 调试输出。
- 日志正确到达存档。
但没有日志到达 Datadog。
使用 Fiddler 检查网络流,我们注意到在调试运行时,日志会发送到 Datadog,而在 NUnit 环境下日志不会发送到 Datadog。
有什么想法或建议吗?
谢谢
【问题讨论】:
-
你找到解决方案了吗?
-
我猜不是......
标签: .net-core nunit serilog datadog