Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Log4J或LogBack在控制台上显示进度条_Java_Logging_Log4j_Console Application_Logback - Fatal编程技术网

Java 使用Log4J或LogBack在控制台上显示进度条

Java 使用Log4J或LogBack在控制台上显示进度条,java,logging,log4j,console-application,logback,Java,Logging,Log4j,Console Application,Logback,我有一个控制台应用程序,它使用Log4J打印输出。这是很有用的,因为我可以轻松实现一个开关,以选择性地显示调试消息,即使它们在默认情况下是隐藏的 此应用程序有一些长时间运行的操作,对于这些操作,可以使用进度条 使用Log4J或LogBack实现此功能的最佳方法是什么?要向控制台写入进度条或任何类型的更新文本,只需使用\r(回车)而不是\n(新行)结束输出,以便下一行覆盖它。这将涉及更多细节。该库使您能够轻松生成美观的控制台输出,包括覆盖上一行 但是,如果您开始使用日志框架,这不仅是不可能的,而且

我有一个控制台应用程序,它使用Log4J打印输出。这是很有用的,因为我可以轻松实现一个开关,以选择性地显示调试消息,即使它们在默认情况下是隐藏的

此应用程序有一些长时间运行的操作,对于这些操作,可以使用进度条


使用Log4J或LogBack实现此功能的最佳方法是什么?

要向控制台写入进度条或任何类型的更新文本,只需使用
\r
(回车)而不是
\n
(新行)结束输出,以便下一行覆盖它。这将涉及更多细节。该库使您能够轻松生成美观的控制台输出,包括覆盖上一行

但是,如果您开始使用日志框架,这不仅是不可能的,而且不是您想要的。正如ChrisM所建议的那样,记录进度的正确方法是每隔一段时间记录一行新的日志,记录到目前为止完成的百分比。通过这种方式,您可以看到您的程序正在做什么,以及它在上下文中走了多远

听起来您想要做的是将日志记录与程序的实际输出分开(这通常是一个好主意,甚至可以忽略进度条问题)。使用日志框架记录有关程序执行的信息;您或调试人员感兴趣的事情。实际程序的输出应通过
System.out
直接写入
stdout

然后,您可以单独决定要对日志执行什么操作。它也可以写入
stdout
,您的日志和输出可以共存,但更好的方法是写入
stderr
(这使重定向更容易)或日志文件(这使您的程序输出更干净,并保存日志以供以后参考)



另外,如果Java不是一个先决条件,那么该命令将根据通过它传输的数据量提供一个功能强大、可自定义的进度条。

我不理解这个问题。如何在日志条目中显示进度条?如果您已经知道进度,为什么不打印xx%完成?