gpt4 book ai didi

c# - 如何限制 NLog 中一行的长度?

转载 作者:行者123 更新时间:2023-11-30 21:49:41 24 4
gpt4 key购买 nike

我们在默认的 NLog 配置中有 2 个目标:FileConsole。为了让控制台保持可读性,我们希望在换行到下一行之前定义控制台中显示的行的最大长度。

现在我已经仔细查看了不同的 layouts for NLog但只能找到 pad wrapper使用 fixed-length 选项。但这会截断该行而不是换行。

我能想到的唯一方法是通过正则表达式和引入 ${newline}布局。

还有其他想法吗?

最佳答案

您可以按照以下行编写自己的包装器:

[LayoutRenderer("wrap-line")]
[AmbientProperty("WrapLine")]
[ThreadAgnostic]
public sealed class WrapLineRendererWrapper : WrapperLayoutRendererBase
{
public WrapLineRendererWrapper ()
{
Position = 80;
}

[DefaultValue(80)]
public int Position { get; set; }

protected override string Transform(string text)
{
return string.Join(Environment.NewLine, MakeChunks(text, Position));
}

private static IEnumerable<string> MakeChunks(string str, int chunkLength)
{
if (String.IsNullOrEmpty(str)) throw new ArgumentException();
if (chunkLength < 1) throw new ArgumentException();

for (int i = 0; i < str.Length; i += chunkLength)
{
if (chunkLength + i > str.Length)
chunkLength = str.Length - i;

yield return str.Substring(i, chunkLength);
}
}
}

如何使用:https://github.com/NLog/NLog/wiki/Extending%20NLog#how-to-write-a-custom-layout-renderer

基于这个:https://github.com/NLog/NLog/blob/master/src/NLog/LayoutRenderers/Wrappers/ReplaceNewLinesLayoutRendererWrapper.cs

这个答案:https://stackoverflow.com/a/8944374/971

关于c# - 如何限制 NLog 中一行的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36788754/

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