日志如何在Java中继续登录同一行?
这类似于this question, which is about a bash file
我们已经创建了一个日志,在运行TestNG测试时将其输出到控制台:
private Log log = LogFactory.getLog(xyz.class);
稍后,在测试过程中,日志中会填写详细信息,以让我们知道正在执行的操作:
log.info("Setting browser...");
this.browser = browser;
log.info("Completed.");
现在它正在打印出来,正如您所期望的:
Setting browser...
Completed.
我想把这个打印在同一行上:
Setting browser...
几毫秒后:
Setting browser...Completed.
这在LogFactory中是可能的吗
# 1 楼答案
如果不知道您使用的是哪个日志库,我想答案几乎肯定是不是,除非您想在其他地方显式指定换行符
java.util.logging
(和Log4J
)框架允许您插入格式化程序来格式化语句。您需要指定一种不以换行符结尾的格式。例如,在Log4J中。他们给出了一个示例模式因此,如果您删除了除
%m
之外的所有内容(%n
是换行符,其他内容分别包括时间和日志级别;%t
和%p
),则换行符不会自动附加到每个语句中但是,这意味着在其他地方,您的其他日志语句必须如下所示:
# 2 楼答案
下面是一个简单的替代方案,如果将
slf4j-api
与logback
实现一起使用,则不需要对记录器配置进行任何更改它可以通过使用
Logger.printf
方法来实现,如下所示:导入
记录器实例
在循环内
样本输出
# 3 楼答案
别碰木头。如果您想让它更具可读性,请对其进行后期处理
如果不小心弄乱日志文件,将丢失信息。以时间戳为例。如果
Setting browswer..
log语句包含一个时间戳,那么将completed
语句放在没有时间戳的地方会丢失信息,并且在同一行上有两个时间戳似乎是不自然的