首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Serilog,Microsoft.Extensions.Logging和Autofac

Serilog,Microsoft.Extensions.Logging和Autofac
EN

Stack Overflow用户
提问于 2019-11-20 12:11:14
回答 2查看 5.3K关注 0票数 7

我有一个针对.Net框架4.6.1的。在这个项目中,我将Serilog与Microsoft.Extensions.Logging结合使用,对于DI也使用Auofac。在控制器构造函数中使用带有DI的ILogger< T>记录器可以很好地工作,我还可以获得日志。

当在API中我需要使用另一个项目--使用Microsoft.Extensions.Logging和Autofac --并期望在一些构造函数中接收ILogger< T>时,乐趣就开始了。我在两个项目中都安装了相同版本的Microsoft.Extensions.Logging。

我得到了休整例外:

激活Microsoft.Extensions.Logging.Logger1[[Microsoft.AspNetCore.Hosting.Internal.WebHost, Microsoft.AspNetCore.Hosting, Version=2.2.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]] -> Microsoft.Extensions.Logging.LoggerFactory -> λ:Microsoft.Extensions.Logging.ILoggerProvider[] -> Microsoft.Extensions.Logging.Console.ConsoleLoggerProvider -> Microsoft.Extensions.Options.OptionsMonitor1[Microsoft.Extensions.Logging.Console.ConsoleLoggerOptions,Microsoft.Extensions.Logging.Console、Version=2.2.0.0、Culture=neutral、PublicKeyToken=adb9793829ddae60] -> Microsoft.Extensions.Options.OptionsFactory1[[Microsoft.Extensions.Logging.Console.ConsoleLoggerOptions, Microsoft.Extensions.Logging.Console, Version=2.2.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]] -> λ:Microsoft.Extensions.Options.IConfigureOptions1[Microsoft.Extensions.Logging.Console.ConsoleLoggerOptions,Microsoft.Extensions.Logging.Console、Version=2.2.0.0、Culture=neutral、PublicKeyToken=adb9793829ddae60][] -> Microsoft.Extensions.Logging.Console.ConsoleLoggerOptionsSetup -> Microsoft.Extensions.Logging.Configuration.LoggerProviderConfiguration1[[Microsoft.Extensions.Logging.Console.ConsoleLoggerProvider, Microsoft.Extensions.Logging.Console, Version=2.2.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]].' Inner Exception1: DependencyResolutionException: An exception was thrown while invoking the constructor 'Void .ctor(Microsoft.Extensions.Logging.Configuration.ILoggerProviderConfigurationFactory)' on type 'LoggerProviderConfiguration1'.时抛出异常

内部'Microsoft.Extensions.Logging.Configuration.LoggerProviderConfigurationFactory.GetConfiguration(System.Type)‘:MethodAccessException:方法Exception2试图访问方法'Microsoft.Extensions.Logging.ProviderAliasUtilities.GetAlias(System.Type)’失败。

这些是API的包:

代码语言:javascript
复制
<PackageReference Include="Autofac" Version="4.9.4" />
    <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="5.0.1" />
    <PackageReference Include="Microsoft.AspNetCore" Version="2.2.0" />
    <PackageReference Include="Microsoft.AspNetCore.Hosting.WindowsServices" Version="2.2.0" />
    <PackageReference Include="Microsoft.AspNetCore.HttpsPolicy" Version="2.2.0" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
    <PackageReference Include="Microsoft.Extensions.Logging" Version="3.0.1" />
    <PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.0.1" />
    <PackageReference Include="Serilog.Extensions.Logging" Version="3.0.1" />
    <PackageReference Include="Serilog.Extensions.Logging.File" Version="1.1.0" />
    <PackageReference Include="Serilog.Settings.Configuration" Version="3.1.0" />

这些是来自另一个项目的包:

代码语言:javascript
复制
 <PackageReference Include="Autofac" Version="4.9.4" />
    <PackageReference Include="Microsoft.Extensions.Logging" Version="3.0.1" />
    <PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.0.1" />
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-25 21:57:30

看起来您可能在幕后有一个不匹配的Microsoft.Extensions.Logging.Configuration,请尝试添加:

代码语言:javascript
复制
<PackageReference Include="Microsoft.Extensions.Logging.Configuration" Version="3.0.1" />

对这两个项目。

票数 11
EN

Stack Overflow用户

发布于 2019-11-21 23:12:31

好了!不要相信这是Autofac特有的。我用的不是自助式的,而是斯里奥格。这是在我更新到3.0.1之后立即发生的。

  • Microsoft.EntityFrameworkCore
  • Microsoft.EntityFrameworkCore.SqlServer
  • Microsoft.EntityFrameworkCore.Tools
  • Microsoft.Extensions.DependencyInjection
  • Microsoft.Extensions.Logging.Debug

将Microsoft.Extensions.Logging从v3.0.1回滚到3.0.0,使我再次运行。还不确定根本原因,但这会让你重新开始工作。

如果您正在使用EF Core,并且从3.0.0转到3.0.1,那么您也需要将其回滚到3.0.0。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58954066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档