【问题标题】:How can I log information to a dividual file by Nlog?如何通过 Nlog 将信息记录到单独的文件中?
【发布时间】:2021-03-17 12:21:15
【问题描述】:

我即将将一些IActionResult中的Spider信息记录到带有日期的单独文件中。

例如:
C:\20210317spider.txt
C:\20210318spider.txt
C:\20210319spider.txt

我不想使用Logger.LogInformation之类的方法将所有信息记录到文件中。

我怎样才能做到这一点?谢谢。

【问题讨论】:

    标签: asp.net-core .net-core nlog


    【解决方案1】:

    您可以在 NLog FileTarget 的 FileName-Layout 中使用 ${shortdate} layoutrenderer:

    <nlog>
      <targets>
        <target type="file" name="spiderFile" fileName="C:/${shortdate}spider.txt" />
      </targets>
      <rules>
        <logger name="Spider" writeTo="spiderFile" final="true" />
      </rules>
    </nlog>
    

    另请参阅NLog Tutorial 和可用于 NLog 布局的available layoutrenders 列表。

    那么你可以用微软ILoggerFactory来做到这一点:

    public class MyClass
    {
         private readonly ILogger _spiderLogger;
    
         public MyClass(ILoggerFactory loggerFactory)
         {
             _spiderLogger = loggerFactory.CreateLogger("Spider");
             _spiderLogger.LogInformation("Hello little spider");
         }
    }
    

    【讨论】:

    • 谢谢。但是,目标元素中也有几个目标,我也需要它们来记录正常信息。现在的问题是我不知道如何通过代码对不同的目标进行排序。
    • @MelonNG 那么我想你应该考虑改进你的问题的细节。也许包括现有的 NLog.config,以及您已经尝试过的内容。
    • @MelonNG 日志过滤的常规方法是使用 Logger 名称。前任。 ILoggerFactory.CreateLogger("loggername") 并使用 &lt;rules&gt; 部分中的 Logger 名称。
    • @MelonNG 在我的回答中添加了更多细节,因此 Logger-name 变得非常具体,不会影响其他目标。
    • 我很抱歉这些天来上班。代码运行良好。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2015-12-09
    • 2019-02-28
    • 2017-11-26
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    相关资源
    最近更新 更多