Method not found: 'Serilog.LoggerConfiguration

17.8k views Asked by At

I have a main logger for my solution which is defined as

    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();

I want to create two separate loggers to log things in two class instances. I have defined them as below. This is located in a separate assembly from the main project.

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();
}

I receive no build errors but I receive this at run time.

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)'."}

4

There are 4 answers

2
TheColonel26 On BEST ANSWER

Turns out I was referencing an older nuget package in my Main Assembly than I was in the sub assembly. After updating them so they match the problem went away.

0
Jhonny Ramirez Zeballos On

Should install the serilog for the netcore framework.

dotnet add package Serilog.AspNetCore --version 4.1.0
0
Sameer Bahad On

Issue due to version mismatch

Your code is correct just match version

I was using Version 2.0 instead of 1.5

Please match your version with (if you are using Active Directory / Azure Active Directory)

Steps

  1. UnInstall Serilog

  2. Install Serilog with match version (1.5/ 2.0/..)

0
rishan mehmi On

For me, the workaround was removing references from web.config, as the versions were fixed and still i was facing issues, so I removed the assembly references from the web.config, and thanks to .net compiler, it targets, as I can think, if a reference is there, to the target interface and hence cannot find things exactly implemented, remove references from web.config of the dll, and the IIS will automatically pick up references from the class file.