我的解决方案有一个主记录器,其定义为
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();
我想创建两个单独的记录器来记录两个类实例中的内容。我将它们定义如下。它位于与主项目不同的程序集中。
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();
}
我没有收到任何构建错误,但我在运行时收到此错误。
找不到方法:'Serilog.LoggerConfiguration Serilog.RollingFileLoggerConfigurationExtensions.RollingFile(Serilog.Configuration.LoggerSinkConfiguration, System.String、Serilog.Events.LogEventLevel、System.String、 System.IFormatProvider、System.Nullable
1、Serilog.Core.LoggingLevelSwitch、布尔值、 布尔值,System.Nullable`1)'。"}1<Int64>, System.Nullable
事实证明,我在主程序集中引用的 nuget 包比在子程序集中引用的 nuget 包旧。更新它们以使它们匹配后,问题就消失了。
版本不匹配导致的问题
您的代码是正确的,只需匹配版本即可
我使用的是 2.0 版本而不是 1.5
请将您的版本与(如果您使用的是 Active Directory / Azure Active Directory)
步骤
卸载 Serilog
安装Serilog匹配版本(1.5/2.0/..)
应该安装netcore框架的serilog。
dotnet add package Serilog.AspNetCore --version 4.1.0
对我来说,解决方法是从 web.config 中删除引用,因为版本已修复,但我仍然面临问题,所以我从 web.config 中删除了程序集引用,并且感谢 .net 编译器,它的目标是, 据我所知,如果存在对目标接口的引用,因此无法找到完全实现的内容,请从 dll 的 web.config 中删除引用,IIS 将自动从类文件中获取引用。