繁体   English   中英

c#编程配置中的NLog自定义分隔符

[英]c# NLog custom delimiter in programmatic configuration

我在 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 设置为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 - 上下文

像这样尝试:

string delim = "|";
Layout = "${longdate}" +delim+"${level:upperCase=true}"+delim+"${message}";

${}语法,表示将被替换的内容。 因此要与字符串变量连接,您需要添加字符串连接的字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM