我有两个项目。
一个是从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