未找到方法:'Serilog.LoggerConfiguration

Method not found: 'Serilog.LoggerConfiguration

我的解决方案有一个主记录器,定义为

    Log.Logger = new LoggerConfiguration()
        .MinimumLevel.Verbose()
        .WriteTo.LiterateConsole(LogEventLevel.Verbose)
        .WriteTo.RollingFile($"{appLogDir}{Path.DirectorySeparatorChar}logs{Path.DirectorySeparatorChar}V-RPi-{{Date}}.log")
        .WriteTo.RollingFile($"{appLogDir}{Path.DirectorySeparatorChar}logs-warnings{Path.DirectorySeparatorChar}V-RPi-{{Date}}.log", LogEventLevel.Warning)
        .WriteTo.File($"{appLogDir}{Path.DirectorySeparatorChar}recent-log.log", fileSizeLimitBytes: 134217728, restrictedToMinimumLevel: LogEventLevel.Verbose)
        .CreateLogger();

我想创建两个单独的记录器来记录两个 class 实例中的内容。我将它们定义如下。它位于与主项目不同的程序集中。

private ILogger comRespLog;
public **constructor**(string name)
{
comRespLog = new LoggerConfiguration()
                .MinimumLevel.Verbose()            
                .WriteTo.RollingFile($"{appLogDir}{Path.DirectorySeparatorChar}logs-CommandResponse-{Name}{Path.DirectorySeparatorChar}V-RPi-{{Date}}.log")
                .CreateLogger();
}

我没有收到构建错误,但我在 运行 时间收到了这个错误。

Method not found: 'Serilog.LoggerConfiguration Serilog.RollingFileLoggerConfigurationExtensions.RollingFile(Serilog.Configuration.LoggerSinkConfiguration, System.String, Serilog.Events.LogEventLevel, System.String, System.IFormatProvider, System.Nullable1<Int64>, System.Nullable1, Serilog.Core.LoggingLevelSwitch, Boolean, Boolean, System.Nullable`1)'."}

原来我在主程序集中引用的 nuget 包比在子程序集中引用的要旧。更新它们使它们匹配后,问题就消失了。

版本不匹配导致的问题

你的代码是正确的刚好匹配版本

我使用的是 2.0 版而不是 1.5

请将您的版本与(如果您使用的是 Active Directory/Azure Active Directory)相匹配

步骤

  1. 卸载 Serilog

  2. 安装匹配版本的 Serilog (1.5/ 2.0/..)

应该为 netcore 框架安装 serilog。

dotnet add package Serilog.AspNetCore --version 4.1.0