本文共 1292 字,大约阅读时间需要 4 分钟。
log4j是Java中广泛使用的日志记录库,其强大的配置能力也使其支持丰富的日志格式化选项。本文将详细介绍常用的日志格式化转换符及其使用方法。
log4j提供了多种转换符用于日志记录,以下是常见转换符及其用法:
%p
:输出日志信息优先级,支持DEBUG、INFO、WARN、ERROR、FATAL等级别。%d
:输出时间点,默认为ISO8601格式,例如:2002-10-18 22:10:28,921。%r
:输出自应用启动到输出日志信息所消耗的毫秒数。%c
:输出日志信息所属的类目,通常为类全名。%t
:输出产生日志事件的线程名。%l
:输出代码中的行数信息,包括类名、方法和行号,格式为类名线程(文件:行号)。%x
:输出与当前线程相关联的NDC(嵌套诊断环境),适用于多客户多线程应用。%%
:输出一个 "%" 字符。%F
:输出日志消息产生时所在的文件名称。%L
:输出代码中的行号。%m
:输出日志信息的具体内容。%n
:输出换行符,Windows平台为"\r\n",Unix平台为"\n"。格式化字符串可通过配置log4j.properties或使用代码注入的方式实现。以下是一个典型的示例:
// 输出日志时间点和行号private static final Logger logger = LoggerFactory.getLogger(MyClass.class);// 示例日志输出logger.debug("进入方法MyClass#myMethod(),参数为{}", parameters);// 输出:2018-04-18 13:45:56,123 [DEBUG] MyClass(MyClass.java:123) - 进入方法MyClass#myMethod(),参数为[参数]// 使用格式化字符串logger.error("错误信息:%s", new RuntimeException("错误描述"));// 输出:2018-04-18 13:45:56,123 [ERROR] MyClass(MyClass.java:456) - 错误信息:java.lang.RuntimeException: 错误描述
通过合理使用格式化字符串,可以实现多种日志记录需求:
%-5p
可以确保p级别的日志左对齐并占用5个字符,若信息不足则用空格补齐。%t{yyyy-MM-dd HH:mm:ss,SSS}
自定义时间格式,例如:%t{HH:mm:ss.SSS}
。%c
、%d
、%p
、%F
、%L
、%m
、%n
等顺序。通过合理配置log4j的日志格式化选项,可以实现对日志信息的精确控制,满足不同场景下的需求。
转载地址:http://icufk.baihongyu.com/