在 Java 中,java.util.logging.Logger(JUL)是标准日志框架,可以通过 自定义 Formatter 来改变日志输出格式。
下面从 最常用方式 到 示例 一步步说明。
java.util.logging.Formatterformat(LogRecord record) 方法HandlerLoggerimport java.util.logging.Formatter;
import java.util.logging.LogRecord;
import java.text.SimpleDateFormat;
import java.util.Date;
public class MyFormatter extends Formatter {
private static final SimpleDateFormat sdf =
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@Override
public String format(LogRecord record) {
String time = sdf.format(new Date(record.getMillis()));
String level = record.getLevel().getName();
String name = record.getLoggerName();
String msg = record.getMessage();
return String.format("%s [%s] %s - %s%n",
time, level, name, msg);
}
}
输出示例:
2026-01-15 10:30:12 [INFO] com.example.Test - 程序启动
import java.util.logging.*;
public class LoggerDemo {
public static void main(String[] args) throws Exception {
Logger logger = Logger.getLogger("com.example");
logger.setUseParentHandlers(false); // 关闭默认控制台格式
ConsoleHandler handler = new ConsoleHandler();
handler.setFormatter(new MyFormatter());
logger.addHandler(handler);
logger.setLevel(Level.ALL);
handler.setLevel(Level.ALL);
logger.info("程序启动");
logger.warning("警告信息");
}
}
record.getThreadID()
@Override
public String format(LogRecord record) {
StringBuilder sb = new StringBuilder();
sb.append(formatMessage(record)).append("\n");
if (record.getThrown() != null) {
record.getThrown().printStackTrace();
}
return sb.toString();
}
handlers=java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.formatter=com.example.MyFormatter
| 框架 | 自定义格式方式 |
|---|---|
| Log4j2 | PatternLayout |
| Logback | logback.xml pattern |
| SLF4J | 本身不处理格式 |
如果你愿意,可以告诉我:
我可以直接帮你写完整配置。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。