使用NLog将水平线或分隔符写入日志文件

时间:2013-01-08 10:41:34

标签: nlog

我想在日志文件中写一个独立的字符串(如水平线或分隔符)。

如果我使用

string delimiter = "------------------------------------------------";
_logger.Info(delimiter);

然后在日志文件中我得到:

2013-01-08 15:58:54.4008 INFO ------------------------------------------------

我不希望在行的开头有额外的信息。

有没有办法用NLog编写这样的分隔符?我检查了NLog维基,但没有找到任何东西。

1 个答案:

答案 0 :(得分:1)

请在此处查看我对类似问题的回答:

Nlog - Generating Header Section for a log file

总而言之,我建议定义另一个记录目标。如果要登录到文件,请定义第二个文件目标,指向同一文件,但布局不同。定义布局,使其具有所需的格式。您可以将布局定义为硬编码到您想要的标题值(在您的情况下为“---------------”),或者您可以定义布局以仅记录消息和然后你可以将布局传递给它。

这是可行的最短的事情。请注意,我从上面链接的答案剪切并粘贴,并根据您的情况稍作修改。我没有测试它。

定义布局:

<variable name="HeaderLayout" value="${message}"/>
<variable name="FileLayout" value="${longdate} | ${logger} | ${level} | ${message}" />

使用布局定义目标:

<target name="fileHeader" xsi:type="File" fileName="xxx.log" layout="${HeaderLayout}" />
<target name="file" xsi:type="File" fileName="xxx.log" layout="${InfoLayout}" />

定义规则/记录器:

<rules>
  <logger name="headerlogger" minlevel="Trace" writeTo="fileHeader" final="true" />
  <logger name="*" minlevel="Trace" writeTo="file" />
</rules>

使用记录器:

public class MyClass
{
  private static Logger logger = LogManager.GetCurrentClassLogger();
  private static Logger headerLogger = LogManager.GetLogger("headerlogger");

  public void DoSomething()
  {
    headerLogger.Info("---------------------");
    logger.Info("Inside DoSomething");
    headerLogger.Info("---------------------");
  }
}

或者,您可以定义布局,使其具有标题定义:

<variable name="HeaderLayout" value="-----------------------------"/>
<variable name="FileLayout" value="${longdate} | ${logger} | ${level} | ${message}" />

然后你会像这样使用它:

Logger headerLogger = LogManager.GetLogger("headerlogger"); //Assuming same rules/loggers definition as above.

headerLogger.Info("It doesn't matter what you put here because the layout has the header message hardcoded");

您可以编写辅助函数,这样就不必明确处理标题记录器:

public void WriteHeader()
{
  LogManager.GetLogger("headerlogger").Info("This string does not matter");
}

我认为这可以让你对如何完成你想要做的事情有一个很好的了解。

希望这有帮助!

祝你好运!