如何为 MicrosoftConsoleLayout 配置 TimestampFormat

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

我正在开发一个 C# 应用程序,使用

NLog
进行日志记录。

我已向我的应用程序添加了一个

NLog.config
文件,其中包含控制台日志的以下布局定义:

<target xsi:type="Console" name="lifetimeConsole" layout="${MicrosoftConsoleLayout}" />

这没问题,但我想添加一个时间戳。

根据此网页,可以向此布局添加时间戳(默认情况下,该参数为

null
,如同一网页上所述)。

如何修改

NLog.config
中的目标定义以添加
TimestampFormat
(最好是
${longdate}
?(我根本不知道语法)

c# parameters nlog
2个回答
0
投票

正如评论中提到的,有 nlog-project.org 这是一个非常好的参考。

例如作为我的配置之一的示例,请参阅

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <Variable name = "UsedLogLevel" Value = "Info"/>
  <Variable name = "Logfile" Value = "Logfile"/>
  <Variable name = "LogfileFolder" Value = "${basedir}"/>
  <Variable name = "daylyLogging" Value = "1"/>
  <targets>
    <target name="logfile" xsi:type="File" fileName="${var:LogfileFolder}/${when:when='${var:daylyLogging}'==1:inner=${shortdate}_}${var:Logfile}.txt" layout="${when:when='${var:daylyLogging}'==1:inner=${time}:else=${date}}|${windows-identity}|${level}|${replace:searchFor=de.inFLOWmation.paperCMD.:replaceWith=:inner=${callsite}}|${message}"/>
    <target name="logconsole" xsi:type="Console" />
  </targets>
  <rules>
    <logger name="de.inFLOWmation.paperCMD.*" minlevel="${var:UsedLogLevel}" writeTo="logconsole" />
    <logger name="de.inFLOWmation.paperCMD.*" minlevel="${var:UsedLogLevel}" writeTo="logfile" />
  </rules>
</nlog>  

你可以像这样通过c#设置顶部的变量

NLog.LogManager.Configuration.Variables["LogfileFolder"] = @"D:\someFolder;
NLog.LogManager.Configuration.Variables["UsedLogLevel"] =  "Debug";
NLog.LogManager.ReconfigExistingLoggers();

0
投票

TimestampFormat
MicrosoftConsoleLayout 可以是
DateTime.ToString(format)
接受的任何格式。前任。
${MicrosoftConsoleLayout:TimestampFormat=o}

另请参阅:https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings

© www.soinside.com 2019 - 2024. All rights reserved.