[英]Logging with Serilog .NET Core not outputting
PS:我的问题是我自己,而不是代码。 代码很好。 我需要将.WriteTo.Console()
更改为.WriteTo.Debug()
(并获取正确的nuget包)。
我正在尝试在.NET Core Web Api中使用Serilog从日志中输出信息。 但是,没有输出任何相关信息(即我要记录的信息)。
我已经安装了以下Serilog nuget软件包:
我已经考虑过在appSettings.json中设置我的配置设置,但是如果可能的话,我更愿意这样做。
这是我的Program.cs
文件。
public class Program
{
public static void Main(string[] args)
{
// Create the logger
Log.Logger = new LoggerConfiguration()
.Enrich.FromLogContext()
.MinimumLevel.Debug()
.WriteTo.Console()
.CreateLogger();
Log.Information("ah there you are");
Log.Debug("super");
Log.Error("super1");
Log.Warning("super2");
try
{
Log.Information("Starting web host");
// Program.Main logic
Directory.SetCurrentDirectory(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
CreateWebHostBuilder(args).Build().Run();
}
catch (Exception ex)
{
Log.Fatal(ex, "Host terminated unexpectedly");
Console.WriteLine(ex.Message);
}
finally
{
// Close and flush the log.
Log.CloseAndFlush();
}
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseSerilog(); // set serilog as the loggin provider
}
如果相关的话,我在Startup.cs
中对此进行了设置。
public class Startup
{
private readonly ILogger _logger;
public Startup(IConfiguration configuration, ILogger<Startup> logger)
{
Configuration = configuration;
_logger = logger;
}
}
下面是我运行应用程序时获得的输出。 没什么要紧的(我已经搜索了多次以确认自己没有丢失任何东西。通常,我会附上这张照片以确认自己确实在正确的区域中寻找)。
有任何想法吗?
您需要在programs.cs中配置记录器
public static IWebHostBuilder CreateWebHostBuilder(string[] args)
{
return WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseSerilog((context, configuration) => configuration
.Enrich.FromLogContext()
.MinimumLevel.Debug()
.WriteTo.Console(),
preserveStaticLogger:true);
}
您可以删除所有其他Serilog引用(在startup.cs中)和“ Log.CloseAndFlush()”指令(它将自动关闭)
然后,您可以在任意位置注入ILogger<T>
接口。
顺便说一句:我不确定是否需要“ preserveStaticLogger”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.