人间工作P 人间工作P
主站 (opens new window)
首页
  • Bukkit开发教程
投喂
关于
  • 分类
  • 标签
  • 时间线
  • 友情链接

人间工作P

我每天都好困… 最近在学习和进行 VOCALOID 创作
主站 (opens new window)
首页
  • Bukkit开发教程
投喂
关于
  • 分类
  • 标签
  • 时间线
  • 友情链接
  • 自定义 Java Logging 输出的格式

MrXiaoM
2025-08-04
Java

自定义 Java Logging 输出的格式

最方便的永远是内置的

测试的时候总想要用 Logger,但是加 log4j 太大了,配置起来也麻烦。

实际上,Java 自带了日志记录器,在 java.util.logging.* 里面。

Logger logger = Logger.getLogger("main");
logger.info("hello world");
1
2

就是它默认输出格式有点别扭

八月 04, 2025 12:55:00 下午 top.mrxiaom.pluginbase.resolver.Main main
信息: hello world
1
2

通过一顿乱找 Java 源码和 javadoc 可以发现,默认的格式是可以通过 JVM 参数 java.util.logging.SimpleFormatter.format 修改的。

// 只需要执行这一行代码,就能在运行时修改 JVM 参数
// 要在 LogManager 初始化之前,即 Logger.getLogger(String) 之前执行才有效
System.setProperty("java.util.logging.SimpleFormatter.format", "[%1$tH:%1$tM:%1$tS %4$s] [%3$s]: %5$s%6$s%n");
1
2
3

默认的格式是 %1$tb %1$td, %1$tY %1$tl:%1$tM:%1$tS %1$Tp %2$s%n%4$s: %5$s%6$s%n,上述示例是我自己看着比较顺眼的格式。

至于格式是什么样的,看看 java.util.logging.SimpleFormatter 的源码就知道了。

return String.format(format,
    zdt,                                       // %1 日期时间 ZonedDateTime
    source,                                    // %2 调用 Logger 的来源方法位置
    record.getLoggerName(),                    // %3 Logger 名字
    record.getLevel().getLocalizedLevelName(), // %4 日志等级的本地化名字
    message,                                   // %5 日志消息
    throwable);                                // %6 异常
1
2
3
4
5
6
7

凑合着能用就行,毕竟这可是一行代码就能配置好格式的内置 Logger,用来测试非常方便。

通过上述示例修改格式后,输出结果如下

[13:01:36 信息] [Main]: hello world
1
编辑 (opens new window)
#编程#Java#Logger
上次更新: 2025/08/04, 13:05:14
最近更新
01
基于自定义生物群系,为你的服务器/单人地图添加区域背景音乐,无需 Mod
07-16
02
记一次从 Sonatype OSSRH 迁移到 Maven Central Publishing Portal
04-24
03
构建 Paper 衍生服务端(Purpur、Folia 等)时使用代理避免拉取失败
02-24
更多文章>
Theme fork from Vdoing | Copyright © 2018-2025 人间工作P | 友情链接
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式