簡體   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