使用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()的差别