OpenJDK 11是在OpenJDK 8之后的第一个长期支持版本,这一版本在JVM日志配置有了很大改动,主要是规范化,统一化了。在OpenJDK 8中,日志配置有很多状态位,让人摸不着头脑,并且比较难以维护与进一步迭代。在OpenJDK 11终于将JVM日志相关的配置规范起来,统一配置。这篇文章会对于这些配置做一个详尽的说明和解析。
一、JVM日志标签
JVM日志和我们java代码中的日志,其实是类似。在Java代码中,我们一般使用slf4j记录日志,例如:
Logger logger = LogFactory.getLooger("core-logger");
logger.info("this is core logger log");
然后日志中就会输出类似于:
2020-02-05 10:50:52.670 INFO [core-logger] [22] [pool-13-thread-1]: this is core logger log
包括时间戳,日志级别,日志标签(core-logger),日志内容这些信息。JVM日志也是包括这些元素。举个例子:
[0.182s][debug][jit,compilation] 1 3 java.lang.StringLatin1::hashCode (42 bytes)
[0.183s][debug][jit,compilation] 2 3 java.lang.Object::<init> (1 bytes)
[0.183s][debug][jit,compilation] 3 3 java.lang.String::hashCode (49 bytes)
可以看出,默认的JVM日志包括:
[启动经过时间][日志级别][日志标签,可能包含多个] 日志内容
其中一行日志,可能包含多个标签