我希望我的应用程序具有记录到文件的功能,因此我开始寻找比默认的.NET Core 2.2记录框架更多的东西。我看到Serilog可以完成这项工作。但是,我找不到有关如何通过依赖注入在.NET Core控制台应用程序中设置Serilog的任何文档。我所看到的只是ASP.NET资料,可能不是我所需要的。
我自己开始做。我安装了(Nuget):
我为ServiceCollection
创建了扩展名
public static void AddLogging(this IServiceCollection services, Microsoft.Extensions.Logging.LogLevel logLevel)
{
var serilogLogger = new LoggerConfiguration()
.WriteTo.Console()
.WriteTo.File("log.txt")
.CreateLogger();
services.AddLogging(builder =>
{
builder.SetMinimumLevel(logLevel);
builder.AddSerilog(logger: serilogLogger, dispose: true);
});
}
记录有效,但是:
dispose
是否应为true
。通常,我希望NET Core的依赖注入框架可以处理服务。答案 0 :(得分:1)
我不确定builder.SetMinimumLevel
(它不使用Serilog枚举)。
我们在创建LoggerConfiguration
对象时设置记录器级别。
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.Console(restrictedToMinimumLevel: LogEventLevel.Debug) // restricted... is Optional
(...)
.CreateLogger();
顺便说一句。值得指出Configuration Basics
中的以下部分记录器vs.接收器最小值-重要的是要意识到只能提高接收器的记录级别,而不能降低记录级别。因此,如果记录器的MinimumLevel设置为Information,则将Debug作为其指定级别的接收器仍将仅看到Information level事件。这是因为记录器级别的配置控制哪些日志记录语句将导致事件的创建,而接收器级别的配置仅过滤这些事件。要创建具有更详细级别的单个记录器,请使用单独的LoggerConfiguration。
我不确定builder.AddSerilog
。
这是对我有用的东西。
using Serilog;
(...)
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
(...)
.CreateLogger();
(...)
return new HostBuilder()
.ConfigureHostConfiguration(...)
.ConfigureServices(...)
.UseSerilog();
答案 1 :(得分:-2)
我必须推荐以下教程: https://www.youtube.com/watch?v=GAOCe-2nXqc ASP.Net Core 控制台应用程序,包括依赖注入。我想它会回答你所有的问题。