IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> JDK 11统一日志管理 -> 正文阅读

[Java知识库]JDK 11统一日志管理

JDK 11统一日志管理

TIPS

本文基于JDK 11编写,理论适用于JDK 9及更高版本。

可使用-Xlog选项,启用统一日志管理。

Xlog选项支持的参数如下:

  • -Xlog:使用info级别启用JVM日志

  • -Xlog:help:打印Xlog帮助文档

  • -Xlog:disable:关闭所有日志记录并清除日志记录框架的所有配置,包括警告和错误的默认配置

  • -Xlog[:option]:按照命令行上出现的顺序应用多个参数。同一输出的多个参数按其给定顺序覆盖。option的格式为:

    [:[what][:[output][:[decorators][:output-options[,...]]]]]
    

    其中:

    • what:指定level和tag的组合,格式:tag1[+tag2...][*][=level][,...] 。除非用 * 指定了通配符,否则只有匹配了指定tag的日志消息才会被匹配。

    • output:设置输出类型。默认为stdout。

    • decorators:使用一系列自定义的装饰器去配置output。缺省的装饰器为uptime、level和tags。

    • output-options:设置Xlog的日志输出选项,格式:

      filecount=file-count filesize=file size with optional K, M or G suffix
      

默认配置

如果只指定了 -Xlog ,则使用默认配置,等价于如下配置:

-Xlog:all=warning:stdout:uptime,level,tags

在运行时控制日志

可用jcmd的 VM.log 诊断命令在运行时控制日志记录。例如:

jcmd 48758 VM.log output what

-Xlog标签和级别

每个日志消息都有一个级别和与之关联的tag集合。消息的级别与其详细信息相对应,tag集与消息包含的内容或者消息所涉及的JVM组件(例如GC、编译器或线程)相对应。

可用的日志级别:

  • off
  • trace
  • debug
  • info
  • warning
  • error

可用的日志标签( 如指定为all,则表示下面所有标签的组合):

  • add
  • age
  • alloc
  • annotation
  • aot
  • arguments
  • attach
  • barrier
  • biasedlocking
  • blocks
  • bot
  • breakpoint
  • bytecode
  • census
  • class
  • classhisto
  • cleanup
  • compaction
  • comparator
  • constraints
  • constantpool
  • coops
  • cpu
  • cset
  • data
  • defaultmethods
  • dump
  • ergo
  • event
  • exceptions
  • exit
  • fingerprint
  • freelist
  • gc
  • hashtables
  • heap
  • humongous
  • ihop
  • iklass
  • init
  • itables
  • jfr
  • jni
  • jvmti
  • liveness
  • load
  • loader
  • logging
  • mark
  • marking
  • metadata
  • metaspace
  • method
  • mmu
  • modules
  • monitorinflation
  • monitormismatch
  • nmethod
  • normalize
  • objecttagging
  • obsolete
  • oopmap
  • os
  • pagesize
  • parser
  • patch
  • path
  • phases
  • plab
  • preorder
  • promotion
  • protectiondomain
  • purge
  • redefine
  • ref
  • refine
  • region
  • remset
  • resolve
  • safepoint
  • scavenge
  • scrub
  • setting
  • stackmap
  • stacktrace
  • stackwalk
  • start
  • startuptime
  • state
  • stats
  • stringdedup
  • stringtable
  • subclass
  • survivor
  • sweep
  • system
  • task
  • thread
  • time
  • timer
  • tlab
  • unload
  • update
  • verification
  • verify
  • vmoperation
  • vtables
  • workgang

下表描述了标签和级别的组合:

日志标签描述
-Xlog:gc打印 gc信息以及垃圾回收发生的时间。
-Xlog:gc*打印至少包含 gc标签的日志消息。它还可以具有与其关联的其他标签。但是,它不会提供phase级别信息。
-Xlog:gc*=trace打印trace级别及更高的gc日志记录信息。输出显示所有gc相关标签以及详细的日志记录信息。
-Xlog:gc+phases=debug打印不同的phase级别信息。这提供了在debug级别记录的详细信息级别。
-Xlog:gc+heap=debug在gc之前和之后打印堆的使用详细。这将会以debug级别打印带有tag和heap的标记的日志
-Xlog:safepoint在同一级别上打印有关应用并发时间(application concurrent time)和停顿时间(application stop time)的详细信息。
-Xlog:gc+ergo*=tracetrace级别同时打印gcergo消息的组合。该信息包括有关堆大小和收集集构造的所有详细信息。
-Xlog:gc+age=trace以trace级别 打印存活区的大小、以及存活对象在存活区的年龄分布
-Xlog:gc*:file=::filecount=,filesize=将输出重定向到文件,在其中指定要使用的文件数和文件大小,单位 kb

-Xlog输出

-Xlog 支持以下类型的输出:

  • stdout :将输出发送到标准输出
  • stderr :将输出发送到stderr
  • file=filename :将输出发送到文本文件。你还可以让文件按照文件大小轮换,例如每记录10M就轮换,只保留5个文件等。默认情况下,最多保留5个20M的文件。可使用 filesize=10M, filecount=5 格式去指定文件大小和保留的文件数。

装饰器

装饰器用来装饰消息,记录与消息有关的信息。可以为每个输出配置一组自定义的装饰器,输出顺序和定义的顺序相同。缺省的装饰器为uptime、level和tags。none表示禁用所有的装饰器。

下表展示了所有可用的装饰器:

装饰器描述
timeor tISO-8601格式的当前日期时间
utctimeor utcUniversal Time Coordinated or Coordinated Universal Time.
uptimeor uJVM启动了多久,以秒或毫秒为单位。例如6.567s.
timemillisor tm相当于 System.currentTimeMillis()
uptimemillisor umJVM启动以来的毫秒数
timenanosor tn相当于 System.nanoTime()
uptimenanosor unJVM启动以来的纳秒数
hostnameor hn主机名
pidor pThe process identifier.
tidor ti打印线程号
levelor l与日志消息关联的级别
tags or tg与日志消息关联的标签集

使用示例

# 示例1:使用info级别记录所有信息到stdout,装饰器使用uptime、level及tags
# 等价于-Xlog:all=info:stdout:uptime,levels,tags
-Xlog

# 示例2:以info级别打印使用了gc标签的日志到stdout
-Xlog:gc

# 示例3:使用默认装饰器,info级别,将使用gc或safepoint标签的消息记录到stdout。
# 如果某个日志同时标签了gc及safepoint,不会被记录
-Xlog:gc,safepoint

# 示例4:使用默认装饰器,debug级别,打印同时带有gc和ref标签的日志。
# 仅使用gc或ref的日志不会被记录
-Xlog:gc+ref=debug

# 示例5:不使用装饰器,使用debug级别,将带有gc标签的日志记录到gc.txt中
-Xlog:gc=debug:file=gc.txt:none

# 示例6:以trace级别记录所有带有gc标签的日志到gctrace.txt文件集中,该文件集中的文件最大1M,保留5个文件;使用的装饰器是uptimemillis、pids
-Xlog:gc=trace:file=gctrace.txt:uptimemillis,pids:filecount=5,filesize=1024

# 示例7:使用trace级别,记录至少带有gc及meta标签的日志到gcmetatrace.txt,同时关闭带有class的日志。某个消息如果同时带有gc、meta及class,将不会被记录,因为class标签被关闭了。
-Xlog:gc+meta*=trace,class*=off:file=gcmetatrace.txt

旧式GC日志和Xlog的对照

旧式GC标记Xlog配置注释
G1PrintHeapRegions-Xlog:gc+region=trace-
GCLogFileSizeNo configuration available日志轮换由框架处理
NumberOfGCLogFilesNot Applicable日志轮换由框架处理
PrintAdaptiveSizePolicy-Xlog:gc+ergo*=level使用debug级别可打印大部分信息,使用trace级别可打印所有 PrintAdaptiveSizePolicy打印的信息
PrintGC-Xlog:gc-
PrintGCApplicationConcurrentTime-Xlog:safepoint注意: PrintGCApplicationConcurrentTimePrintGCApplicationStoppedTime是记录在同一tag之上的,并且没有被分开
PrintGCApplicationStoppedTime-Xlog:safepoint注意: PrintGCApplicationConcurrentTimePrintGCApplicationStoppedTime是记录在同一tag之上的,并且没有被分开
PrintGCCauseNot ApplicableXlog总是会记录GC cause
PrintGCDateStampsNot Applicable日期戳由框架记录
PrintGCDetails-Xlog:gc*-
PrintGCIDNot ApplicableXlog总是会记录GC ID
PrintGCTaskTimeStamps-Xlog:gc+task*=debug-
PrintGCTimeStampsNot Applicable时间戳由框架记录
PrintHeapAtGC-Xlog:gc+heap=trace-
PrintReferenceGC-Xlog:gc+ref*=debug注意:旧式写法中,PrintGCDetails启用时, PrintReferenceGC才会生效
PrintStringDeduplicationStatistics-Xlog:gc+stringdedup*=debug-
PrintTenuringDistribution-Xlog:gc+age*=level使用debug日志级别记录最相关信息;trace级别记录所有 PrintTenuringDistribution会打印的信息。
UseGCLogFileRotationNot Applicable用来记录 PrintTenuringDistribution

旧式运行时日志和Xlog的对照

旧式运行时标记Xlog配置注释
TraceExceptions-Xlog:exceptions=info-
TraceClassLoading-Xlog:class+load=level使用info级别记录常规信息,debug级别记录额外信息。在统一日志记录语法中, -verbose:class等价于 -Xlog:class+load=info,class+unload=info.
TraceClassLoadingPreorder-Xlog:class+preorder=debug-
TraceClassUnloading-Xlog:class+unload=level使用info级别记录常规信息,debug级别记录额外信息。在统一日志记录语法中, -verbose:class等价于 -Xlog:class+load=info,class+unload=info.
VerboseVerification-Xlog:verification=info-
TraceClassPaths-Xlog:class+path=info-
TraceClassResolution-Xlog:class+resolve=debug-
TraceClassInitialization-Xlog:class+init=info-
TraceLoaderConstraints-Xlog:class+loader+constraints=info-
TraceClassLoaderData-Xlog:class+loader+data=level使用info级别记录常规信息,debug级别记录额外信息。
TraceSafepointCleanupTime-Xlog:safepoint+cleanup=info-
TraceSafepoint-Xlog:safepoint=debug-
TraceMonitorInflation-Xlog:monitorinflation=debug-
TraceBiasedLocking-Xlog:biasedlocking=level使用info级别记录常规信息,debug级别记录额外信息。
TraceRedefineClasses-Xlog:redefine+class*=level使用level=info,level=debug和level=trace提供越来越多的信息。

参考文档

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-06-26 16:47:16  更:2022-06-26 16:49:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:27:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码