Java Util Logging如何配置输出线程、类与方法名
配置可行性结论
无需修改任何业务代码,该需求完全可以通过logging.properties配置文件直接实现,不需要额外编码。Java Util Logging(下文简称JUL)默认提供的SimpleFormatter原生就支持输出线程名、类名、方法名字段,只需要调整格式模板即可。
具体配置方法
JUL的格式模板通过占位符匹配对应日志字段,和你需求相关的核心占位符如下:
%t:输出触发日志打印的线程名称%c:输出调用日志打印方法的类全限定名%M:输出调用日志打印方法的方法名
你只需要在logging.properties中修改SimpleFormatter的格式配置项即可,以下是可直接复用的配置示例:
# 指定控制台日志使用SimpleFormatter作为格式化器 java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter # 定义日志输出格式:时间 日志级别 [线程名] 类名.方法名 : 日志内容 系统换行符 java.util.logging.SimpleFormatter.format = %1$tY-%m-%d %1$tH:%M:%S %4$s [%t] %c.%M: %5$s%n
上述配置的输出效果类似:
2024-05-20 14:30:22 INFO [http-nio-8080-exec-1] com.example.demo.UserController.login: 用户登录请求参数校验通过
注意事项
如果你的项目中对JUL做了二次封装,写了自定义的日志工具类,不要在工具类里直接调用日志打印方法,否则JUL解析调用栈时会拿到工具类的类名和方法名,无法输出真实业务类的相关信息。这种情况要么调整封装逻辑适配调用栈偏移,要么直接在业务类中声明Logger实例。
内容的提问来源于stack exchange,提问作者Vinny Gray
相关产品推荐
相关产品推荐

