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日誌包括:
[啓動經過時間][日誌級別][日誌標籤,可能包含多個] 日誌內容
其中一行日誌,可能包含多個標籤