使用NLog将Logger Name转换为Excel文件

时间:2018-05-14 00:55:13

标签: c# csv nlog

感谢Rolf在这个问题上的评论: NLog in C# with severity AND categories

我能够在文本文件中记录日志消息的类别(例如" Thermal"或"数据库"或" Mechanical"。我&#39 ;这样做只需将名称传递给" GetLogger"方法。

public MainWindow()
    {
        InitializeComponent();
        var logger = NLog.LogManager.GetCurrentClassLogger();
        logger.Info("Hello World");

        (NLog.LogManager.GetLogger("Database")).Info("Here is a DB message");
        (NLog.LogManager.GetLogger("Thermal")).Info("Here is a Thermal message");
    }

文本文件如下所示:

2018-05-13 17:40:47.7442|INFO|NLogExperiments.MainWindow|Hello World
2018-05-13 17:40:50.3404|INFO|Database|Here is a DB message
2018-05-13 17:40:50.3404|INFO|Thermal|Here is a Thermal message

非常好。我可能会在一个单独的问题中询问如何重新格式化它 现在我想将这些消息放入CSV(Excel)文件中。我正在使用:

<target name="excelfile" xsi:type="File" fileName="nLog.csv" archiveAboveSize="50000000" archiveNumbering="Sequence" maxArchiveFiles="3">
  <layout xsi:type="CsvLayout">
    <!-- Layout Options -->

    <column name="time" layout="${longdate}" />
    <column name="level" layout="${level}"/>
    <column name="name" layout="${name}"/>
    <column name="message" layout="${message}" />
    <column name="codeLine" layout="${event-context:item=codeLine}" />

  </layout>
</target>

但输出仅为:

time,level,name,message,codeLine
2018-05-13 17:40:47.7442,Info,,Hello World,
2018-05-13 17:40:50.3404,Info,,Here is a DB message,
2018-05-13 17:40:50.3404,Info,,Here is a Thermal message,

这并不令人惊讶。我使用&#34; name&#34;猜测。
GetLogger中的字段叫什么?
更一般地说,我如何知道我可以在CSV布局中添加的所有选项? 最后,有一个关于将NLog与CSV一起使用的好教程吗?我还没找到。

谢谢,

戴夫

1 个答案:

答案 0 :(得分:0)

  

GetLogger中的字段叫什么?

您正在寻找${logger} - 请参阅${logger} docs

  

更一般地说,我如何知道我可以在CSV布局中添加的所有选项?

您可以使用所有布局渲染器,请参阅list with all layout renderers

有关CSV格式化的选项,请参阅CsvLayout docs