【问题标题】:NLog: Format loglevel with WhitespacesNLog:使用空格格式化日志级别
【发布时间】:2014-01-06 11:45:58
【问题描述】:

我正在使用 NLog 进行日志记录。 目前我的布局字符串是:

"${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”以填充空格,使其看起来像一个有 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

遗憾的是,我没有找到任何东西......有人可以帮忙吗?

【问题讨论】:

    标签: format whitespace nlog


    【解决方案1】:

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

    【讨论】:

    • 谢谢!填充是我正在寻找的词 :-) 根据您的提示,我发现了它 - 它更简单:${level:uppercase=true:padding=-5} 做到了:-)
    • 至于 2017 年,LayourRenderer 名称从 ${padding} 更改为 ${pad}。除此之外,一切正常
    • 如果其他人正在搜索示例,我想添加此示例。注意:固定长度会导致错误。 ${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 分隔符是 ':',所以这将起作用 ${pad:padding=25:fixedlength=true:inner=${logger}}
    • @Jeroen 哦,谢谢指出,padding=5,fixedlength=true 那里的逗号,看不到,最后用: 替换,现在可以了。
    猜你喜欢
    • 2023-03-20
    • 1970-01-01
    • 2021-11-03
    • 2017-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 1970-01-01
    相关资源
    最近更新 更多