NLOG - 将单个 webapi 控制器方法日志重定向到特定文件

问题描述 投票:0回答:1

我有一个利用 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"
}

有人能够提供如何实现这一目标的指导吗?谢谢。 感谢支持

.net-core asp.net-core-webapi nlog
1个回答
0
投票

也许为控制器创建

_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"
}
© www.soinside.com 2019 - 2024. All rights reserved.