我正在VS2019中使用NLog,并且在首次使用前以编程方式设置记录器(无外部nlog配置文件)时,我在其中定义了记录器,如
var logConsole = new NLog.Targets.ColoredConsoleTarget()
{
Name = "logconsole",
Layout = "${longdate}|${level:upperCase=true}|${message}"
};
config.LoggingRules.Add(new NLog.Config.LoggingRule("*", LogLevel.Debug, logConsole));
当前,我在其中硬编码了定界符|
。
如何使定界符变量?定义string delim = "|"
,然后将“布局”设置为Layout = "${longdate}${delim}${level:upperCase=true}${delim}${message}"
,在这里不起作用。
您可以在NLog中使用上下文构造,例如GlobalDiagnosticsContext
。
示例:
var logConsole = new NLog.Targets.ColoredConsoleTarget()
{
Name = "logconsole",
Layout = "${longdate}${gdc:item=delimiter}${level:upperCase=true}${gdc:item=delimiter}${message}"
};
config.LoggingRules.Add(new NLog.Config.LoggingRule("*", LogLevel.Debug, logConsole));
并在您的代码中设置:
GlobalDiagnosticsContext.Set("delimiter", "|");
您可以在其他地方的代码中更改定界符。
GlobalDiagnosticsContext
对于整个应用程序是全局的。如果您需要更有限的范围,那也是可能的!参见NLog - Context
尝试这样:
string delim = "|";
Layout = "${longdate}" +delim+"${level:upperCase=true}"+delim+"${message}";
${}
语法,表示将被替换的内容。因此,要使用字符串变量进行串联,您需要添加具有字符串串联的字符。