我有如下 NLog 配置。
如果存在,它会打印线程的名称。否则我会得到空字符串而不是线程名称。
问题:我如何存档下面的行为?
threadid
NLog 变量相同)。 当前配置示例:
<variable name="defaultLayout" value="${date} ${level} [${threadname}] ${logger} - ${message} ${exception:format=ToString}"/>
<targets async="true">
<target name="ConsoleAppender"
type="ColoredConsole"
layout="${var:defaultLayout}" />
</targets>
请注意:我想避免打印两个变量,例如这个布局没用:
... [${threadname}-${threadid}] ...
最佳答案
TLDR:使用这个 - ${threadname:whenEmpty=${threadid}}
所以正确的配置:
<variable name="defaultLayout" value="${date} ${level} [${threadname:whenEmpty=${threadid}}] ${logger} - ${message} ${exception:format=ToString}"/>
<targets async="true">
<target name="ConsoleAppender"
type="ColoredConsole"
layout="${var:defaultLayout}" />
</targets>
关于c# - 当 .Net Thread 没有名称时,如何使用 NLog 打印 threadid 而不是 threadname?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54889134/