gpt4 book ai didi

c# - NLog 控制台突出显示属性

转载 作者:行者123 更新时间:2023-12-04 15:22:32 25 4
gpt4 key购买 nike

我看过以下 video关于 Serilog 的解释。我也想在我的应用程序中使用结构化日志记录(至少是其中的一部分),但我更喜欢使用 NLog (1),因为它已经是我们堆栈的一部分,我们已经习惯了它并且更喜欢使用相同的记录器在我们的项目中,以及 (2) 我已经阅读了比较 here并且似乎 NLog 的性能更高。
所以我也读了 NLog support structured logging我已经在测试应用程序中实现了它,没有任何问题。它运作良好。
我在视频中看到并喜欢 Serilog 的是,在写入控制台时,它突出显示了传递给日志记录函数的参数,如下所示:
Example of Serilog console parsing
我希望在我目前正在构建的控制台应用程序上也有相同的内容。我都试过了 Console目标和 ColoredConsole但非有这种效果。在 NLog 中可能吗?
这是我的目标配置:

<target name="file"
xsi:type="File"
archiveEvery="Day"
archiveFileName="Logs\log.{#}.txt"
fileName="Logs\log.txt"
archiveNumbering="DateAndSequence"
archiveDateFormat="yyyy-MM-dd"
archiveAboveSize="104857600"
maxArchiveFiles="30"
layout="${longdate} | ${uppercase:${level}} | ${logger} | ${threadid} | ${message} ${exception}"
/>

<target xsi:type="ColoredConsole"
name="ColorConsole"
layout="${uppercase:${level}}: ${message} ${exception:innerFormat=Message,StackTrace}"
header="Memoriez API"
useDefaultRowHighlightingRules="false"
>
<highlight-word foregroundColor="Green" ignoreCase="true" text="info" wholeWords="true" />
<highlight-word foregroundColor="Red" ignoreCase="true" text="warn" wholeWords="true" />
<highlight-word backgroundColor="Red" foregroundColor="White" ignoreCase="true" text="error" wholeWords="true" />
<highlight-row backgroundColor="DarkRed" foregroundColor="Yellow" condition="level == LogLevel.Fatal" />
</target>

最佳答案

我认为您无法为 ColoredConsoleTarget 中的参数着色.可能可以使用 WordHighlighting,但您很快就会遇到匹配数字会突出显示所有数字而不仅仅是参数的问题。
我的猜测是您需要编写自定义 ColoredConsoleTarget为了突出参数。我刚看了src\NLog\Targets\ColoredConsoleTarget.cs文件,它只提供 RowHighlightingRulesWordHighlightingRules .看起来当应用颜色代码时 LogEventInfo已经被渲染成一个普通的字符串。
我认为您需要编写自定义 RenderLogEvent将呈现参数的颜色转义序列的函数。这会有点棘手,因为 GenerateColorEscapeSequences WordHighlighting 将转义在调用之前生成的任何颜色序列)。
以下是我的想法:

  • 创建新类(class) ColoredParamConsoleTarget代码复制自 ColoredConsoleTarget .看起来没有虚拟方法可以覆盖现有的类。
  • 创建一个 ColoredRenderLogEvent方法并解析参数并在参数前后添加颜色序列。
  • 更换对 RenderLogEvent 的调用与 ColoredRenderLogEvent
  • 关于c# - NLog 控制台突出显示属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62998883/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com