.net core NUnit、Serilog和Datadog
我们在使用NUnit、Serilog和Datadog时面临一个问题 我们的配置 我们正在与:.net core NUnit、Serilog和Datadog,.net-core,nunit,serilog,datadog,.net Core,Nunit,Serilog,Datadog,我们在使用NUnit、Serilog和Datadog时面临一个问题 我们的配置 我们正在与: .NET核心3.1(Visual Studio 16.5.4) NUnit+NUnit3TestAdapter Serilog+Serilog.Sinks.Datadog.Logs 所有软件包都是最新的 Serilog配置 这是我们正在使用的Serilog配置: DatadogConfiguration datadogConfiguration = new DatadogConfiguration(
- .NET核心3.1(Visual Studio 16.5.4)
- NUnit+NUnit3TestAdapter
- Serilog+Serilog.Sinks.Datadog.Logs
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();
DatadogConfiguration DatadogConfiguration=newdatadogconfiguration()
{
Url=”https://http-intake.logs.datadoghq.eu",
端口=443,
usesl=true,
UseTCP=false
};
ServiceProvider=新的ServiceCollection()
.AddSingleton()
.AddLogging(configure=>configure.AddSerilog(
新LoggerConfiguration()
.MinimumLevel.Verbose()
.Enrich.WithMachineName()
.Enrich.WithProcessName()
.Enrich.WithProcessId()
.Enrich.WithThreadName()
.Enrich.WithThreadId()
.Enrich.WithProperty(“应用程序”、“Serilog测试应用程序”)
.Enrich.WithExceptionDetails()
.WriteTo.Debug(
输出模板:“[{Timestamp:o}{Level:u3}][{MachineName}][{ProcessName}:{ProcessId}][{ThreadName}:{ThreadId}][{Application}][{SourceContext}]{Message:lj}{Exception}{Properties:j}{NewLine}”)
.WriteTo.File(
路径:“D:\\Temp\\LogFile.txt”,
输出模板:“[{Timestamp:o}{Level:u3}][{MachineName}][{ProcessName}:{ProcessId}][{ThreadName}:{ThreadId}][{Application}][{SourceContext}]{Message:lj}{Exception}{Properties:j}{NewLine}”)
.WriteTo.DatadogLogs(
“API_密钥”,
资料来源:“csharp”,
服务:“测试服务(按代码)”,
主机:“Serilog测试应用程序”,
tags:newstring[]{“TAG_1:VALUE_1”,“TAG_2:VALUE_2”},
配置:datadogConfiguration)
.CreateLogger())
.BuildServiceProvider();
测试
我们正在调试运行(VisualStudio中的F5键)和NUnit测试环境(VisualStudio中)中测试此配置
问题
我们面临的问题是,在调试运行时,所有工作都正常:
- 日志正确到达Visual Studio调试输出
- 日志正确归档
- 日志正确到达Datadog
- 日志正确到达Visual Studio调试输出
- 日志正确归档
谢谢只需将此添加到startup.cs
var config = new DatadogConfiguration("https://http-intake.logs.datadoghq.eu");
Serilog.Log.Logger = new LoggerConfiguration()
.WriteTo.DatadogLogs("<Datadog_API_KEY>", configuration: config)
.CreateLogger();
// Call this from anywhere in the app
Serilog.Log.Logger.Information("This is a test from session-start");
Serilog.Log.Logger.Error("This is a test from session-start");
var config=new DatadogConfiguration(“https://http-intake.logs.datadoghq.eu");
Serilog.Log.Logger=新的LoggerConfiguration()
.WriteTo.DatadogLogs(“,配置:config)
.CreateLogger();
//从应用程序中的任何位置调用此功能
Serilog.Log.Logger.Information(“这是从会话开始的测试”);
Serilog.Log.Logger.Error(“这是从会话开始的测试”);
我很抱歉这么晚才回答
在与Datadog支持人员交换了大量电子邮件后,结果证明解决方案非常简单:
[OneTimeTearDown]
public virtual void Cleanup()
{
logger.Dispose();
}
Dispose()
方法强制接收器正常关闭并发送存储在缓存中的日志
请注意,日志不会立即出现在Datadog控制台中:允许他们的系统几秒钟(几分钟)来处理您发送的日志。您找到解决方案了吗?我想没有。。。。