问题 :
如何将从应用程序写入的数据(字节流)转储到文件系统?(类似于 tcpdump,但用于 IO/文件)。
理想情况下,它应该能够在写入时“附加”并转储流,而无需对应用程序进行特定配置。
语境 :
我有一个 Java 应用程序部署在某些服务器上。此应用程序使用 JCL+Log4j 来记录各种技术内容。
在其中一些上,我遇到了一个相当不常见的问题:日志文件经常被二进制数据污染。
相同的应用程序,相同的配置,相同的硬件,相同的操作系统......不同的行为
我的日志都在这里:如果我用“字符串”处理日志文件,一切都会恢复正常,但正如我所说,90%的二进制垃圾,预处理文件需要花费大量的时间。
目标 :
能够确定问题出在 Java 应用程序/JVM 还是操作系统/硬件上
答案1
使用 strace,例如:
strace -p PID -e write -s 1024
它将转储进程的写入系统调用。最大字符串大小为 1024。