使用类库静态方法的序列号输出



我有两个项目。

一个是从nuget提要引用的类库(.NET标准2.1(,另一个是API(.NET Core 3.1(

我想把类库文件中的所有日志都输入到API日志中。目前我的API启动文件配置如下:

Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()                .
.WriteTo.Console()                .
.CreateLogger();
services.AddLogging(loggingBuilder =>
{
loggingBuilder.AddSerilog();
});

当将记录器注入我的控制器时,这完全可以正常工作。

private readonly ILogger _logger;
public UserController(ILogger<UserController> logger)
{
_logger = logger;
}

我尝试实现静态记录器如下:

private static ILogger _logger => Log.ForContext(typeof(HelperClass));
Log.Information($"useful message");
_logger.LogInformation("useful message");

但是,nuget类库项目中的helper类静态方法没有显示日志记录。

我有一种感觉,我需要以某种方式将静态Logger从API连接到实例,但在这一点上我很迷失了方向。

public static ILogger Logger { get; set; }

非常感谢任何建议,谢谢。

如果您想使用另一个日志,如log4net、Nlog。。。。ILogger将帮助您,只需注入并像您完成一样完成此操作

public UserController(ILogger<UserController> logger)
{
_logger = logger;
}

但是,如果你确定只使用serilog。你可以使用静态类,顺便说一句,它们是一样的(当然,你需要在类代码的头部使用serilog(

日志信息("日志信息"(;

最后:使用Ilogger并将其注入构造函数类是最标准、最完整的,就像一个好学生一样,lol