java - 如何创建非数据 gc.log 文件?

标签 java linux tomcat

我看到我的 gc.log 文件是数据文件,而其他日志文件是 ASCII 文本。

因此,我无法通过非 gc.log 文件进行 grep。

$ pwd
/app/tomcat7/logs


$ du -hsmc *log* | sort -n

50  access_log2016-11-21.log
74  access_log2016-11-25.log
79  access_log2016-11-24.log
300 gc.log-20161118
418 gc.log-20161119
542 gc.log-20161120



$ file access_log2016-11-24.log gc.log-20161118
access_log2016-11-24.log: ASCII text
gc.log-20161118:          data



$ time grep a access_log2016-11-24.log  | wc -l
426520

real    0m0.888s
user    0m0.740s
sys 0m0.150s



$ time grep a gc.log-20161118
Binary file gc.log-20161118 matches

real    0m9.574s
user    0m9.278s
sys 0m0.274s

您可以在 gc.log 文件中看到 grep 花费的时间更长,并且没有返回有用的结果。

将 GC 打印到 gc.log 文件的参数是 -Xloggc:/app/tomcat7/logs/gc.log

如何确保 gc.log 文件创建为 ASCII 文本文件而不是数据文件?

最佳答案

这里的问题是 grep 将 GC 日志解释为二进制数据文件,它实际上是文本。如果您在 grep 上使用 -a 或 --text 参数,它会将其视为文本。

grep -a gc.log-20161118

关于java - 如何创建非数据 gc.log 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40812369/

相关文章:

web-services - 使 MTOM 可选

java - 在 GlassFish Server Open Source Edition 3.1.2 中管理共享库

java - 在静态方法中创建新的 JAXB Marshaller 实例...它是线程安全的吗?

java - 将资源作为类成员尝试使用资源

linux - `ssh -vT git@github.com` 工作正常,代理在 github ssh key 中。问题在哪里?

linux - "find"和 "ls"与 GNU 并行

java - 在 Excel 中查找合并的单元格,拆分单元格并将其写入新电子表格?

java - ScheduledExecutorService 的使用和流内锁定套接字的清理

c - 从内部捕获 SIGSEGV 时,如何知道涉及的无效访问类型?

eclipse - 未知参数 : -launcherDir GWT