按照有关如何使用 Serilog 的教程,我从 appsettings.json 文件中读取了设置 – 当事情很简单时,以下所有内容都运行良好:
主程序(简单 MVP 版本):
public static void Main(string[] args)
{
//Read Configuration from appSettings
var config = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
//Initialize Logger
Log.Logger = new LoggerConfiguration().ReadFrom.Configuration(config).CreateLogger();
try
{
Log.Information("Starting up the service");
CreateHostBuilder(args).Build().Run();
....
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseWindowsService()
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService();
})
.UseSerilog();
然后是带有BackgroundService的类:
....
using Microsoft.Extensions.Logging;//and not Serilog!!
public class Worker : BackgroundService
{
private readonly ILogger _logger;
....
public Worker(ILogger logger)
{
_logger = logger;
}
———-对我来说简单的事情到此结束:-) —————– ——————
现在,我想从第一个 MVP 构建一个“真正的”程序 – 根据 SOLID 原则将函数放置在单独的类中。例如,我的第一个类是 ConfigurationCollector,从 appsettings.json 文件中收集所有相关参数我放在一个单独的班级。该类工作并完成工作 – 但我希望日志记录工作 – 我尝试使用跨类使用的所有已配置的 Serilog 记录器(就像我对 ILogger 所做的那样,以便 Worker 对象创建一个新的 ConfigurationCollector 类,如
public Worker(ILogger logger)
{
_logger = logger;
_configCollector = new ConfigCollector(logger);
}
我知道 logger 现在是一种
ILogger
不是
ILogger
但是如何将服务启动时的原始 Serilog 注入到使用的每个类中,以便在日志中正确显示对象?
public class ConfigCollector
{
private readonly ILogger _logger;
....
public ConfigCollector(ILogger logger)
{
_logger = logger;
}
© 版权声明
本站下载的源码均来自公开网络收集转发二次开发而来,
若侵犯了您的合法权益,请来信通知我们1413333033@qq.com,
我们会及时删除,给您带来的不便,我们深表歉意。
下载用户仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,访问及下载者下载默认同意本站声明的免责申明,请合理使用切勿商用。
THE END
暂无评论内容