簡體   English   中英

Serilog、Microsoft.Extensions.Logging 和 Autofac

[英]Serilog, Microsoft.Extensions.Logging and Autofac

我有一個針對.Net Framework 4.6.1 的 Asp Net Core API。 在這個項目中,我將 Serilog 與 Microsoft.Extensions.Logging 以及用於 DI 的 Auofac 一起使用。 在 controller 構造函數中使用 ILogger< T> 記錄器和 DI 可以完美地工作,我也得到了日志。

樂趣開始於 API 我需要使用另一個項目,使用 Microsoft.Extensions.Logging 和 Autofac 並希望在某些構造函數中接收 ILogger<T>。 我在兩個項目中都安裝了相同版本的 Microsoft.Extensions.Logging。

我得到了休閑異常:

Autofac.Core.DependencyResolutionException: '激活 Microsoft.Extensions.Logging.Logger 1[[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.OptionsMonitor時拋出異常1[[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.OptionsMonitor 1[[Microsoft .Extensions.Logging.Console.ConsoleLoggerOptions,Microsoft.Extensions.Logging.Console,版本=2.2.0.0,Culture=neutral,PublicKeyToken=adb9793829ddae60]] -> Microsoft.Extensions.Options.OptionsFactory 1[[Microsoft.Extensions.Logging.Console.ConsoleLoggerOptions, Microsoft.Extensions.Logging.Console, Version=2.2.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]] -> λ:Microsoft.Extensions.Options.IConfigureOptions 1[[Microsoft.Extensions.Logging.Console.ConsoleLoggerOptions , Microsoft.Extensions.Loggi ng.Console,版本=2.2.0.0,Culture=neutral,PublicKeyToken=adb9793829ddae60]][] -> Microsoft.Extensions.Logging.Console.ConsoleLoggerOptionsSetup -> Microsoft.Extensions.Logging.Configuration.LoggerProviderConfiguration`1[[Microsoft.Extensions .Logging.Console.ConsoleLoggerProvider,Microsoft.Extensions.Logging.Console,版本=2.2.0.0,文化=中性,PublicKeyToken=adb9793829ddae60]]。

內部異常1:DependencyResolutionException:在“LoggerProviderConfiguration`1”類型上調用構造函數“Void.ctor(Microsoft.Extensions.Logging.Configuration.ILoggerProviderConfigurationFactory)”時引發異常。

內部異常 2:MethodAccessException:嘗試通過方法“Microsoft.Extensions.Logging.Configuration.LoggerProviderConfigurationFactory.GetConfiguration(System.Type)”訪問方法“Microsoft.Extensions.Logging.ProviderAliasUtilities.GetAlias(System.Type)”失敗。

這些是 API 的軟件包:

<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" />

這些是來自另一個項目的包:

 <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" />

. 不相信這是 Autofac 特定的,我沒有使用 autofac。 但是sreilog。 這發生在我更新到 3.0.1 之后立即發生。

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

將 Microsoft.Extensions.Logging 從 v 3.0.1 回滾到 3.0.0 git 我再次運行。 還不確定根本原因,但這應該會讓你重新開始工作。

如果您使用的是 EF Core 並從 3.0.0 升級到 3.0.1,您還需要將它們回滾到 3.0.0。

看起來您可能在幕后使用了不匹配的Microsoft.Extensions.Logging.Configuration 嘗試添加:

<PackageReference Include="Microsoft.Extensions.Logging.Configuration" Version="3.0.1" />

對這兩個項目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM