大家好,我有Mcv Api Project,我尝试用Serilog登录,但是当我尝试调用我的api并在文件/控制台中记录一些文本时,它是空的,我不能理解出了什么问题
我的program.cs
public static void Main(string[] args)
{
var seriliogConfiguration = new ConfigurationBuilder()
.SetBasePath(Path.Combine(Directory.GetCurrentDirectory(), "Configs"))
.AddJsonFile("settings.json")
.Build();
var logger = new LoggerConfiguration()
.ReadFrom.Configuration(seriliogConfiguration)
.CreateLogger();
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseSerilog()
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});我的设置json
{
"Serilog": {
"Using": [],
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"System": "Warning"
}
},
"Enrich": [ "FromLogContext", "WithMachineName", "WithProcessId", "WithThreadId" ],
"WriteTo": [
{
"Name": "Console"
},
{
"Name": "File",
"Args": {
"path": "D:\\Logs\\logs.txt",
"outputTemplate": "{Timestamp:G} {Message}{NewLine:1}{Exception:1}"
}
}
]
}
}当我尝试在文件和控制台中执行日志记录时,
private readonly ILogger<WeatherForecastController> _logger;
public WeatherForecastController(ILogger<WeatherForecastController> logger) => _logger = logger;
public IEnumerable<WeatherForecast> Get() =>_logger.LogInformation("You requested Get()");发布于 2020-11-03 12:06:43
因为Serilog没有注入到Asp.net Core容器中。控制器中调用的接口不是Serilog方法。因此,日志将不会写入文件。您需要修改Program.cs。
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
var seriliogConfiguration = new ConfigurationBuilder()
.SetBasePath(Path.Combine(Directory.GetCurrentDirectory(), "Configs"))
.AddJsonFile("settings.json")
.Build();
webBuilder.UseSerilog((hostingContext, loggerConfiguration) =>
{
loggerConfiguration.ReadFrom.Configuration(seriliogConfiguration);
});
});
}我在此操作中添加了一个日志。
[HttpGet]
public IActionResult Get()
{
_logger.LogInformation("This info is in index");
return Ok();
}在控制台中。

在此日志文件中。

https://stackoverflow.com/questions/64649047
复制相似问题