在非控制器模型上传递 Ilogger
Pass Ilogger on non-controller models
我正在 .net core 中创建一个应用程序,我正在尝试输出日志。
我能够记录控制器的输出,我还想记录模型的输出,如下所示。
不幸的是,我不知道将什么作为参数传递给构造函数。我的猜测和controller一样Ilogger<controller>
,但是想知道有没有正确的方法
提前致谢。
控制器:
public class SampleController : Controller {
public readonly ILogger<SampleController > _logger;
public SampleController (ILogger<SampleController > logger)
{
_logger = logger;
}
[HttpGet("[action]")]
public string FindSample()
{
_logger.LogInformation("FindSample Start");
// ***** Is it necessary to carry over the log of the sample controller to a much lower DAO from here? *****
var model = new SampleModel(_logger);
var result = model.Find();
_logger.LogInformation("FindSample End");
return result;
}
}
型号:
public class SampleModel
{
public readonly ILogger<SampleController> _logger;
public SampleModel(ILogger<SampleController> logger)
{
_logger = logger;
}
public string Find()
{
_logger.LogInformation("FindModel Start");
var dao = new SampleDao(_logger);
var code = dao.GetCode();
_logger.LogInformation("FindModel End");
return code;
}
}
道:
public class SampleDao
{
public readonly ILogger<SampleController> _logger;
public SampleContext SampleContext;
// ***** Should I pass it as an argument forever? *****
public SampleDao(ILogger<SampleController> logger)
{
_logger = logger;
if (SampleContext == null)
{
SampleContext = new SampleContext();
}
}
public string GetCode()
{
_logger.LogInformation("GetCode Start");
var code = SampleContext.SampleTable.FirstOrDefault().code;
_logger.LogInformation("GetCode End");
return code;
}
}
您应该将 class 作为通用参数传递给记录器被注入的地方。所以你应该使用:
在你的道中
ILogger<SampleDao> logger
在您的模型中
ILogger<SampleModel> logger
更多信息您可以查看:
Logging in ASP.NET core
我正在 .net core 中创建一个应用程序,我正在尝试输出日志。
我能够记录控制器的输出,我还想记录模型的输出,如下所示。
不幸的是,我不知道将什么作为参数传递给构造函数。我的猜测和controller一样Ilogger<controller>
,但是想知道有没有正确的方法
提前致谢。
控制器:
public class SampleController : Controller {
public readonly ILogger<SampleController > _logger;
public SampleController (ILogger<SampleController > logger)
{
_logger = logger;
}
[HttpGet("[action]")]
public string FindSample()
{
_logger.LogInformation("FindSample Start");
// ***** Is it necessary to carry over the log of the sample controller to a much lower DAO from here? *****
var model = new SampleModel(_logger);
var result = model.Find();
_logger.LogInformation("FindSample End");
return result;
}
}
型号:
public class SampleModel
{
public readonly ILogger<SampleController> _logger;
public SampleModel(ILogger<SampleController> logger)
{
_logger = logger;
}
public string Find()
{
_logger.LogInformation("FindModel Start");
var dao = new SampleDao(_logger);
var code = dao.GetCode();
_logger.LogInformation("FindModel End");
return code;
}
}
道:
public class SampleDao
{
public readonly ILogger<SampleController> _logger;
public SampleContext SampleContext;
// ***** Should I pass it as an argument forever? *****
public SampleDao(ILogger<SampleController> logger)
{
_logger = logger;
if (SampleContext == null)
{
SampleContext = new SampleContext();
}
}
public string GetCode()
{
_logger.LogInformation("GetCode Start");
var code = SampleContext.SampleTable.FirstOrDefault().code;
_logger.LogInformation("GetCode End");
return code;
}
}
您应该将 class 作为通用参数传递给记录器被注入的地方。所以你应该使用:
在你的道中
ILogger<SampleDao> logger
在您的模型中
ILogger<SampleModel> logger
更多信息您可以查看: Logging in ASP.NET core