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


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

"${date:format=dd.MM.yyyy HH\\:mm\\:ss,fff} | ${level:uppercase=true} | ${message}"

这导致以下日志:

18.12.2013 11:23:14,834 | INFO | this is an info
18.12.2013 11:23:14,835 | TRACE | this is a trace

我现在想要的是格式化“$ 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

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


4645
2017-12-18 10:34


起源



答案:


尝试使用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}"

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

padding=5 意味着添加5个填充字符(默认为 ' ')左(负面意味着右边的垫)

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


15
2017-12-18 19:16



谢谢!填充是我正在寻找的词:-)有了你的提示,我发现它 - 它更简单:$ {level:uppercase = true:padding = -5}是吧:-) - user3114804
至于2017年,LayourRenderer名称从$ {padding}更改为$ {pad}。除此之外,一切都有效 - Marcin Zablocki
如果其他人正在搜索示例,我想添加此示例。注意:fixedlength会导致错误。 $ {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} - dgxhubbard
@dgxhubbard分隔符为':',因此这将起作用$ {pad:padding = 25:fixedlength = true:inner = $ {logger}} - Jeroen


答案:


尝试使用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}"

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

padding=5 意味着添加5个填充字符(默认为 ' ')左(负面意味着右边的垫)

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


15
2017-12-18 19:16



谢谢!填充是我正在寻找的词:-)有了你的提示,我发现它 - 它更简单:$ {level:uppercase = true:padding = -5}是吧:-) - user3114804
至于2017年,LayourRenderer名称从$ {padding}更改为$ {pad}。除此之外,一切都有效 - Marcin Zablocki
如果其他人正在搜索示例,我想添加此示例。注意:fixedlength会导致错误。 $ {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} - dgxhubbard
@dgxhubbard分隔符为':',因此这将起作用$ {pad:padding = 25:fixedlength = true:inner = $ {logger}} - Jeroen