我正在开发一个 C# 应用程序,使用
NLog
进行日志记录。
我已向我的应用程序添加了一个
NLog.config
文件,其中包含控制台日志的以下布局定义:
<target xsi:type="Console" name="lifetimeConsole" layout="${MicrosoftConsoleLayout}" />
这没问题,但我想添加一个时间戳。
根据此网页,可以向此布局添加时间戳(默认情况下,该参数为
null
,如同一网页上所述)。
如何修改
NLog.config
中的目标定义以添加TimestampFormat
(最好是${longdate}
?(我根本不知道语法)
正如评论中提到的,有 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();
TimestampFormat
MicrosoftConsoleLayout 可以是 DateTime.ToString(format)
接受的任何格式。前任。 ${MicrosoftConsoleLayout:TimestampFormat=o}
。
另请参阅:https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings