C# ';Serilog.Extensions.Hosting.DiagnosticContext';试图激活';Serilog.AspNetCore.RequestLoggingMiddleware';
当我运行程序直到Startup>Configure时,它可以在C:\Serilog处创建日志文本文件,但在下面这行中断:C# ';Serilog.Extensions.Hosting.DiagnosticContext';试图激活';Serilog.AspNetCore.RequestLoggingMiddleware';,c#,C#,当我运行程序直到Startup>Configure时,它可以在C:\Serilog处创建日志文本文件,但在下面这行中断: app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); 错误是: Microsoft.AspNetCore.Hosting.Diagnostics[6] Application start
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
错误是:
Microsoft.AspNetCore.Hosting.Diagnostics[6]
Application startup exception
System.InvalidOperationException: Unable to resolve service for type 'Serilog.Extensions.Hosting.DiagnosticContext' while attempting to activate 'Serilog.AspNetCore.RequestLoggingMiddleware'
这是我的程序。cs:
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Serilog;
using System;
namespace xxx
{
public class Program
{
public static void Main(string[] args)
{
var configuration = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
Log.Logger = new LoggerConfiguration().ReadFrom.Configuration(configuration).CreateLogger();
try
{
Log.Information("Application starting up");
CreateHostBuilder(args).Build().Run();
}
catch (Exception ex)
{
Log.Fatal(ex, "The application failed to start correctly.");
}
finally
{
Log.CloseAndFlush();
}
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}
还有我的appsettings.json
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"Serilog": {
"Using": [],
"MinimumLevel": {
"Default": "Warning",
"Override": {
"Microsoft": "Warning",
"System": "Warning"
}
},
"Enrich": [ "FromLogContext", "WithMachineName", "WithProcessId", "WithThreadId" ],
"WriteTo": [
{ "Name": "Console" },
{
"Name": "File",
"Args": {
"path": "C:\\SeriLog\\log.txt",
"outputTemplate": "{Timestamp:G} {Message}{NewLine:1}{Exception:1}}"
}
},
{
"Name": "File",
"Args": {
"path": "C:\\SeriLog\\log.json",
"formatter": "Serilog.Formatting.Json.JsonFormatter, Serilog"
}
},
{
"Name": "Seq",
"Args": {
"serverUrl": "http://localhost:8081"
}
}
]
}
}
似乎您缺少
。在程序中使用serilog
。这是我的程序的模板
:
public class Program
{
public static void Main(string[] args)
{
var webHost = CreateHostBuilder(args)
.Build();
// access any service from here by using webHost.Services.GetService<...
Log.Information("Starting MyWebApp");
// ... configure Serilog
try
{
webHost.Run();
}
catch (Exception ex)
{
Log.Fatal(ex, "The application failed to start correctly.");
}
finally
{
Log.CloseAndFlush();
}
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.UseSerilog();
}
公共类程序
{
公共静态void Main(字符串[]args)
{
var webHost=CreateHostBuilder(args)
.Build();
//使用webHost.Services.GetService从此处访问任何服务
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder=>
{
webBuilder.UseStartup();
})
.useserlog();
}
public class Program
{
public static void Main(string[] args)
{
var webHost = CreateHostBuilder(args)
.Build();
// access any service from here by using webHost.Services.GetService<...
Log.Information("Starting MyWebApp");
// ... configure Serilog
try
{
webHost.Run();
}
catch (Exception ex)
{
Log.Fatal(ex, "The application failed to start correctly.");
}
finally
{
Log.CloseAndFlush();
}
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.UseSerilog();
}