为了账号安全,请及时绑定邮箱和手机立即绑定

java9之后的log

标签:
Java

java9之后log框架改变了。很多gc日志的参数也变了。设置新的参数,往往有点不知所措。
下面就介绍一下新日志的模式。
样例

java -Xlog:gc*=info Main
[0.011s][info][gc,heap] Heap region size: 1M
[0.014s][info][gc     ] Using G1
[0.014s][info][gc,heap,coops] Heap address: 0x0000000700000000, size: 4096 MB, Compressed Oops mode: Zero based, Oop shift amount: 3
[0.188s][info][gc,heap,exit ] Heap
[0.188s][info][gc,heap,exit ]  garbage-first heap   total 262144K, used 2048K [0x0000000700000000, 0x0000000800000000)
[0.188s][info][gc,heap,exit ]   region size 1024K, 3 young (3072K), 0 survivors (0K)
[0.188s][info][gc,heap,exit ]  Metaspace       used 6238K, capacity 6394K, committed 6528K, reserved 1056768K
[0.188s][info][gc,heap,exit ]   class space    used 544K, capacity 574K, committed 640K, reserved 1048576K


大家可以看到这样的日志似乎变化特别大。
下面是设置的规范

-Xlog[:[selections][:[output][:[decorators][:output-options]]]]

其实设置和使用比原来是简单很多了。使用就几个模块,可能比较麻烦的是找出这些模块。我们下面一个一个看模块。

selections

selections主要是两部分组成,tags和levels。
我们案例里设置的

gc*=info

tag就是gc*,level就是info。

level不写默认就是info。他有以下几种选择,分别代表不同程度的日志,

off, trace, debug, info, warning, error

tag的种类比较多

 add, age, alloc, annotation, aot, arguments, attach, barrier, biasedlocking, blocks, bot, breakpoint, bytecode, cds, census, class, classhisto, cleanup, codecache, compaction, compilation, constantpool, constraints, container, coops, cpu, cset, data, datacreation, dcmd, decoder, defaultmethods, director, dump, ergo, event, exceptions, exit, fingerprint, free, freelist, gc, handshake, hashtables, heap, humongous, ihop, iklass, init, inlining, interpreter, itables, jfr, jit, jni, jvmti, liveness, load, loader, logging, malloc, mark, marking, membername, memops, metadata, metaspace, methodcomparator, mirror, mmu, module, monitorinflation, monitormismatch, nestmates, nmethod, normalize, objecttagging, obsolete, oldobject, oom, oopmap, oops, oopstorage, os, pagesize, parser, patch, path, perf, phases, plab, preorder, preview, promotion, protectiondomain, purge, redefine, ref, refine, region, reloc, remset, resolve, safepoint, sampling, scavenge, setting, smr, stackmap, stacktrace, stackwalk, start, startuptime, state, stats, stringdedup, stringtable, subclass, survivor, sweep, system, table, task, thread, time, timer, tlab, tracking, unload, unshareable, update, verification, verify, vmoperation, vmthread, vtables, vtablestubs, workgang

其实平时用不到这么多,想看的时候可以找出想要的配置上就好。
tag的表达

-Xlog:gc

表示只包含gc标签的,例如

[0.014s][info][gc     ] Using G1
-Xlog:gc*

表示至少包含gc的log,例如gc还有gc和heap的组合。

[0.011s][info][gc,heap] Heap region size: 1M
[0.014s][info][gc     ] Using G1

tag也可以组合

-Xlog:gc,os

用逗号表示或,筛选出只包含gc或者只包含os的。

[0.003s][info][os] Use of CLOCK_MONOTONIC is supported
[0.003s][info][os] Use of pthread_condattr_setclock is not supported
[0.003s][info][os] Relative timed-wait using pthread_cond_timedwait is associated with the default clock
[0.003s][info][os] SafePoint Polling address, bad (protected) page:0x000000010e2bd000, good (unprotected) page:0x000000010e2be000
[0.015s][info][gc] Using G1
-Xlog:gc+heap

用加号表示且,包含gc和heap的日志

[0.010s][info][gc,heap] Heap region size: 1M

特殊用法,利用off的level可以筛选

-Xlog:gc*=info,coops*=off

这里至少包含gc,不能包含coops。会在最初的记录里,去掉了含有coops的记录。

output

out有三种选择。

 stdout
 stderr
 file=

不写默认是stdout。

decorators

decorator就是日志前面的时间,标签等的输出

 time (t), utctime (utc), uptime (u), timemillis (tm), uptimemillis (um), timenanos (tn), uptimenanos (un), hostname (hn), pid (p), tid (ti), level (l), tags (tg)

只要编写decorator,就可以修改日志的输出顺序,以及输出的前面的部分。
默认是

uptime,levels,tags

output-options

filesize
filecount

这里就是控制文件大小和个数的。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
1.6万
获赞与收藏
380

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消