使用System.out.printf()输出日志重定向到文件后显示混乱问题

Posted chenggang816

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用System.out.printf()输出日志重定向到文件后显示混乱问题相关的知识,希望对你有一定的参考价值。

写了一个小工具,使用System.out.printf()输出日志,以方便使用者查看,在终端显示没有问题,但重定向到文件就有问题了,会出现一些很奇怪的乱序现象。

上网查询资料,判断应该是跟重定向和Linux缓冲区有关,标准输出为行缓冲,文件为全缓冲,可以使用 stdbuf -oL [command] 来实现重定义缓冲区类型,于是将原先的启动脚本中的 nohup java ... & 改为 nohup stdbuf -oL ... & , 这样改完后用vim命令查看文件内容是正常的,但使用tail -f 命令就不行了,还是一样会乱序,原来 tail -f 的输出也是全缓冲, 于是查看时改成 stdbuf -oL tail -f stdout.log, 乱序问题解决。

以上是关于使用System.out.printf()输出日志重定向到文件后显示混乱问题的主要内容,如果未能解决你的问题,请参考以下文章

java中System.out.print()与System.out.println()与System.out.printf()的差别

java语言之输出数据的格式控制

Android Logcat:如何输出带有 TAB 字符的日志消息?

java中用print函数的输出问题。

JAVA的输入输出

Java printf没有打印加倍