Cod*_*Guy 3 .net c# logging asp.net-core ilogger
当给出 null 时,它给出 Value 不能为 null。(参数“记录器”)错误。 即使给出模型实例,它仍然保持为空
 public class MyController : Controller
    {
            public MyController(ILogger<MyController> logger)
            {
              logger.LogInformation("Log Testing");
            }
            public ActionResult List()
            {
                int Id = 5;
                MyModel model = new MyModel(null);
                model.GetItem(Id);
                return View("List", model);
            }
    }
public class MyModal:BaseModel
{
    private readonly ILogger<MyModal> _logger;
    public MyModel(ILogger<MyModel> logger) 
        {
           this._logger = logger;
        }
    public MyModel GetItem (Int Id)
    {
      try
      {
        //My Code
      }
      catch(Exception e){
       _logger.LogError(e.Message);
      }
    }
}
根据建议我编辑了我的问题
正如评论中所建议的:
ILoggerFactory并将MyController其存储在字段变量中(例如_loggerFactory)。MyModel在您的List方法中构造一个记录器:ILogger<MyModel> modelLogger = _loggerFactory.CreateLogger<MyModel>();MyModel构造函数中:MyModel model = new MyModel(modelLogger);例子:
public class MyController
{
    private readonly ILogger _logger;
    private readonly ILoggerFactory _loggerFactory;
    
    public MyController(ILogger<MyController> logger, ILoggerFactory loggerFactory)
    {
        _logger = logger;
        _loggerFactory = loggerFactory;
    }
    public ActionResult List()
    {
        int Id = 5;
        ILogger<MyModel> modelLogger = _loggerFactory.CreateLogger<MyModel>();
        MyModel model = new MyModel(modelLogger);
        model.GetItem(Id);
        return View("List", model);
    }
}
| 归档时间: | 
 | 
| 查看次数: | 4536 次 | 
| 最近记录: |