Java 使用Log4J或LogBack在控制台上显示进度条
我有一个控制台应用程序,它使用Log4J打印输出。这是很有用的,因为我可以轻松实现一个开关,以选择性地显示调试消息,即使它们在默认情况下是隐藏的 此应用程序有一些长时间运行的操作,对于这些操作,可以使用进度条Java 使用Log4J或LogBack在控制台上显示进度条,java,logging,log4j,console-application,logback,Java,Logging,Log4j,Console Application,Logback,我有一个控制台应用程序,它使用Log4J打印输出。这是很有用的,因为我可以轻松实现一个开关,以选择性地显示调试消息,即使它们在默认情况下是隐藏的 此应用程序有一些长时间运行的操作,对于这些操作,可以使用进度条 使用Log4J或LogBack实现此功能的最佳方法是什么?要向控制台写入进度条或任何类型的更新文本,只需使用\r(回车)而不是\n(新行)结束输出,以便下一行覆盖它。这将涉及更多细节。该库使您能够轻松生成美观的控制台输出,包括覆盖上一行 但是,如果您开始使用日志框架,这不仅是不可能的,而且
使用Log4J或LogBack实现此功能的最佳方法是什么?要向控制台写入进度条或任何类型的更新文本,只需使用
\r
(回车)而不是\n
(新行)结束输出,以便下一行覆盖它。这将涉及更多细节。该库使您能够轻松生成美观的控制台输出,包括覆盖上一行
但是,如果您开始使用日志框架,这不仅是不可能的,而且不是您想要的。正如ChrisM所建议的那样,记录进度的正确方法是每隔一段时间记录一行新的日志,记录到目前为止完成的百分比。通过这种方式,您可以看到您的程序正在做什么,以及它在上下文中走了多远
听起来您想要做的是将日志记录与程序的实际输出分开(这通常是一个好主意,甚至可以忽略进度条问题)。使用日志框架记录有关程序执行的信息;您或调试人员感兴趣的事情。实际程序的输出应通过System.out
直接写入stdout
然后,您可以单独决定要对日志执行什么操作。它也可以写入stdout
,您的日志和输出可以共存,但更好的方法是写入stderr
(这使重定向更容易)或日志文件(这使您的程序输出更干净,并保存日志以供以后参考)
另外,如果Java不是一个先决条件,那么该命令将根据通过它传输的数据量提供一个功能强大、可自定义的进度条。我不理解这个问题。如何在日志条目中显示进度条?如果您已经知道进度,为什么不打印xx%完成?