繁体   English   中英

NLog控制台单行记录

[英]NLog Console logging on single line

我希望能够在单个控制台行中显示例如跟踪级别的日志消息,而不是将它们一个接一个地堆叠。

一个跟踪日志消息应显示在控制台中,然后在同一行上替换为另一个跟踪日志消息。 当出现另一条日志消息(例如,警告)时,消息堆栈应照常继续。

有没有一种方法可以为NLog中的控制台日志记录定义单行覆盖?

如果包装NLog,这似乎可以工作

public class Logger : NLog.Logger
{
    public void TraceStackConsole(string message)
    {
        this.Trace(message);
        Console.SetCursorPosition(0, Console.CursorTop-1);
    }
}

尽管我还没有成功,但您也可以通过https://github.com/NLog/NLog/wiki/Replace-NewLines-Layout-Renderer获得一些有趣的结果。 用“ \\ r”替换它可能会起作用

如何在C#Windows控制台应用程序中更新当前行? “如果仅在控制台上打印“ \\ r”,则光标将返回到当前行的开头,然后可以将其重写。”

非常感谢@alexbezek,这正是我想要的! :)

尽管我认为为记录器创建扩展方法对我来说更方便:

public static class LoggerExtension
{
    public static void ConsoleStack(this Logger logger, string message)
    {
        logger.Trace(message);
        Console.SetCursorPosition(0, Console.CursorTop-1);
    }
}

因此,我可以这样称呼它: Logger.ConsoleStack("Log message");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM