我对.NET Core还不熟悉,也没有深入研究过依赖注入。但是我了解其概念并知道它是个好东西,也知道我的应用程序需要它。因为在某些时候可能需要增强或切换日志功能。
我启动了一个控制台应用程序,使用了一个类库(.NET Standard 2.0),应该将一些东西记录到控制台和日志文件中。
目前我按照一些指南配置了Microsoft.Extensions.Logging.Console来进行日志记录(暂未设置文件输出)。这个记录器的输出是每个条目写两行,例如:
info: SampleWebConsoleApp.Program[0]
This is a test of the emergency broadcast system.
我不知道你怎么看,但我对将日志输出分为两行有些不喜欢。 我的大脑无法解析 :-)。 我希望日志一行显示,并在开头带有时间戳。 就我所知,控制台记录器似乎无法更改为单行并具有时间戳。
于是我的旅程开始了。 我发现了像Serilog、NLog或我过去使用的老朋友log4net等工具。
我试着使用Serilog,因为它看起来简单易用,而且它还有一个文件记录器,这正是我所需要的。 所以我开始把旧的控制台记录器替换为Serilog的控制台和文件记录器。 但后来我发现了一些像这样的例子:
static void Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.WriteTo.File("consoleapp.log")
.CreateLogger();
...
}
但这似乎与我对依赖注入的稀缺知识相矛盾,因为我认为它应该像这样配置(假设!):
但这似乎与我对依赖注入的稀缺知识相矛盾,因为我认为它应该像这样配置(假设!):
private static void ConfigureServices(IServiceCollection services)
{
...
services.Configure<UnknownSerilogConfigurationClass>(config => config.FileName = "consoleapp.log");
}
我看到有人提到,Serilog本身就是一个记录器工厂,因此是DI的反模式。
现在我有点困惑不知道该从哪里开始。
支持依赖注入的日志记录框架,我应该为一个相对简单的控制台应用程序使用什么? 必须具备的功能是允许我配置输出,以包括时间戳,并且输出应在一行上。
有什么建议吗?