You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在受Systemd管控的Java程序中自定义System.out.println日志级别用于过滤?

无需第三方日志库实现journalctl带自定义级别标记的日志输出

方案1:自定义日志工具类手动拼接格式

直接封装一个轻量工具类,将自定义级别以[级别]:的格式拼接到日志消息前,通过System.out.println输出即可,完全不需要依赖第三方库。

示例代码:

public class SimpleLogger {
    // 通用日志方法,支持自定义级别
    public static void log(String message, String level) {
        String formattedLog = String.format("[%s]: %s", level, message);
        System.out.println(formattedLog);
    }

    // 可选:封装常用级别快捷方法
    public static void error(String message) {
        log(message, "Error");
    }

    public static void warn(String message) {
        log(message, "Warn");
    }

    public static void info(String message) {
        log(message, "Info");
    }
}

使用方式:

// 调用通用方法自定义级别
SimpleLogger.log("Hello this is a Error", "Error");
// 或者使用快捷方法
SimpleLogger.error("Hello this is a Error");

此时通过journalctl -b -u test.service查看日志,输出效果为:

Nov 02 11:58:41 test java[10]: [Error]: Hello this is a Error

补充说明

如果希望级别显示在进程ID后方(如你示例中的java[10] [Error]:格式),这属于journalctl的输出模板配置,而非Java代码控制范围。你可以通过自定义journalctl输出格式实现,例如:

journalctl -b -u test.service -o "short|%time% %hostname% %syslog_identifier%%pid% %message%"

但日志内容本身仍需要包含[Error]:前缀,才能达到预期的视觉效果。

内容的提问来源于stack exchange,提问作者Morty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 05:40:32