NLog:使用空格格式化日志级别

use*_*804 14 format whitespace nlog

我正在使用NLog进行日志记录.目前我的Layout-String是:

"${date:format=dd.MM.yyyy HH\\:mm\\:ss,fff} | ${level:uppercase=true} | ${message}"
Run Code Online (Sandbox Code Playgroud)

这会产生以下日志:

18.12.2013 11:23:14,834 | INFO | this is an info
18.12.2013 11:23:14,835 | TRACE | this is a trace
Run Code Online (Sandbox Code Playgroud)

我现在想要的是格式化"$ level"以填充Whitespaces,使其看起来像一个包含5个字符的表.

我想拥有:

18.12.2013 11:23:14,834 | INFO  | this is an info
18.12.2013 11:23:14,835 | TRACE | this is a trace
Run Code Online (Sandbox Code Playgroud)

我没有发现任何遗憾......任何人都可以帮忙吗?

wag*_*ghe 18

尝试使用PaddingLayoutRendererWrapper.我不确定一个好的配置示例在哪里,但是NLog源代码库中的源代码位于此处,因此您可以对正确的配置进行反向工程:

https://github.com/NLog/NLog/blob/master/src/NLog/LayoutRenderers/Wrappers/PaddingLayoutRendererWrapper.cs

我想你会做这样的事情:

"${date:format=dd.MM.yyyy HH\\:mm\\:ss,fff} | ${padding:padding=5,fixedlength=true:${level:uppercase=true}} | ${message}"
Run Code Online (Sandbox Code Playgroud)

希望该示例将填充左侧5个空格的所有日志级别值,然后修剪为绝对长度5.

padding=5表示向左添加5个填充字符(默认为' ')(负表示右侧填充)

fixedlength=true 是一个布尔值,表示填充结果应该被修剪为"填充"的最大长度(即在我的示例中为5)

  • 谢谢!填充是我正在寻找的词:-)用你的提示我发现它 - 它更简单:$ {level:uppercase = true:padding = -5}是吧:-) (17认同)
  • 如果其他人正在寻找一个例子,我想添加这个例子。注意:固定长度会导致错误。${pad:padding=-25:inner=${date:format=MM/dd/yy HH\:mm\:ss fff}} ${pad:padding=-8:inner=${level:uppercase=true }} ${pad:padding=-25:inner=${logger}} - ${message} (4认同)
  • @dgxhubbard 分隔符是“:”,所以这会起作用 ${pad:padding=25:fixedlength=true:inner=${logger}} (4认同)
  • 至于 2017 年,LayourRenderer 名称从 ${padding} 更改为 ${pad}。除此之外,一切正常 (3认同)

sti*_*til 8

自 2022 年起,使用以下内容:

${level:uppercase=true:padding=-5}
Run Code Online (Sandbox Code Playgroud)

例子:

2022-04-15 03:04:58.0764 | INFO  | Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler | AuthenticationScheme: Cookies was challenged.
Run Code Online (Sandbox Code Playgroud)

如果您想右对齐,请使用5代替-5

参考: https: //github.com/NLog/NLog/wiki/Pad-Layout-Renderer