我有一个利用 NLog 的 .NET Core 5 Web API,目前将所有日志捕获在一个文件中,并每天存档。
我的目标是仅将特定控制器方法生成的日志重定向到专用文件。这可能吗?
我进行了一些测试,但我尝试的配置似乎不起作用:
{
"logger": "XXX.WebAppApiTest.Controllers.MyController.MyMethod",
"minLevel": "Info",
"writeTo": "singleMethodLogFile"
}
其他部分:
"singleMethodLogFile": {
"type": "File",
"fileName": "${aspnet-appbasepath}/Logs/MyMethod_${shortdate}.log",
"archiveFileName": "${aspnet-appbasepath}/Logs/Archive/MyMethod_${shortdate}.log",
"maxArchiveFiles": "1",
"archiveEvery": "Day"
}
有人能够提供如何实现这一目标的指导吗?谢谢。 感谢支持
也许为控制器创建
_methodLogger
,如下所示:
public class MyController
{
private readonly ILogger _logger;
private readonly ILogger _methodLogger;
public MyController(ILogger<MyController> logger, ILoggerFactory loggerFactory)
{
_logger = logger;
_methodLogger = loggerFactory.CreateLogger($"{GetType()}.{nameof(MyMethod)}");
}
public void MyMethod()
{
_methodLogger.LogInfo("Hello from method");
}
}
然后您可以显式重定向
_methodLogger
的输出,如下所示:
{
"logger": "MyNameSpace.MyController.MyMethod",
"minLevel": "Info",
"writeTo": "singleMethodLogFile"
}