我使用NLog在我的 Web API 应用程序(.Net 6)上写入日志,并且我需要在ConfigureServices
方法
内写入日志。
由于此时 ILogger 不可用,所以我使用这种方式写入日志:
var logger = LogManager.GetCurrentClassLogger();
logger.Log(NLog.LogLevel.Debug, "my data");
它可以正常工作并正确写入日志,
但问题是,如果此代码存在,则在整个应用程序和所有后续请求中,${aspnet-request-url}和${aspnet-mvc-action}属性将显示为空在日志中。
如果我删除此代码 - 它们在所有请求中都显示为完整。
我尝试将写入日志的方式更改为其他方式:
var sp = services.BuildServiceProvider();
var logger = sp.GetService<ILogger<Startup>>();
logger.LogDebug("my data");
它也可以正确写入,但是属性${aspnet-request-url}和${aspnet-mvc-action}的问题仍然相同,都显示为empty。
我的问题是:
如何一方面在ConfigureServices方法中通过NLog写入日志,
另一方面又不丢失两个${aspnet-request-url}和${aspnet-mvc-动作}属性?
ps
我想再次指出,在之后发生的所有请求中,它们都是空的,
而不仅仅是在本文中的ConfigureServices 方法中。