依赖注入 – 将Serilog注入存储库以进行日志记录的最佳方法
发布时间:2020-12-14 05:00:50 所属栏目:百科 来源:网络整理
导读:我可以将ILogger注入控制器,但我在尝试将其注入存储库类时遇到问题. 这是我的启动方法: public Startup(IHostingEnvironment env) { // Set up configuration sources. var builder = new ConfigurationBuilder() .AddJsonFile("appsettings.json") .AddEnv
我可以将ILogger注入控制器,但我在尝试将其注入存储库类时遇到问题.
这是我的启动方法: public Startup(IHostingEnvironment env) { // Set up configuration sources. var builder = new ConfigurationBuilder() .AddJsonFile("appsettings.json") .AddEnvironmentVariables(); Configuration = builder.Build(); Log.Logger = new LoggerConfiguration() .MinimumLevel.Error() .WriteTo.RollingFile(Path.Combine( env.WebRootPath,"log-{Date}.txt")) .CreateLogger();} 这是在我的Configure方法中: loggerFactory.AddConsole(Configuration.GetSection("Logging")); loggerFactory.AddDebug(); loggerFactory.AddSerilog(); 我的控制器: private readonly ISkillsRepo _repo; private readonly ILogger _logger; public HistoryAndReportsController(Context db,ILogger<SkillsRepo> logger) { _repo = new SkillsRepo(db,logger); _logger = logger; } 回购: private readonly Context _db; private readonly ILogger _logger; public SkillsRepo(Context db,ILogger<SkillsRepo> logger) { _db = db; _logger = logger; } 我可以将记录器注入控制器,然后将其传递给repo,但必须有一种方法将记录器直接注入repo但我找不到任何示例. 解决方法
正如已经提到的那样,您需要首先在依赖注入(DI)容器中注册您的存储库.
public void ConfigureServices(IServiceCollection services) { ... services.AddScoped<IUserRepository,AwesomeUserRepository>(); ... } ILoggerFactory(因此ILogger< T>)是framework provided injections并且不需要手动添加. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |