Created
September 4, 2025 00:44
-
-
Save sudo-adduser-jordan/5b534e06dc2730efdf81d9f6d718b359 to your computer and use it in GitHub Desktop.
LogFormatter.java
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import java.util.logging.*; | |
| public class LogFormatter extends Formatter | |
| { // a drop in replacement for standard lib logs | |
| public static final String RESET = "\u001b[0m"; | |
| public static final String RED = "\u001b[31m"; | |
| public static final String YELLOW = "\u001b[33m"; | |
| public static final String BLUE = "\u001b[34m"; | |
| public static final String GREEN = "\u001b[32m"; | |
| public static Logger getLogger(Class<?> inputClass) | |
| { | |
| Logger logger = Logger.getLogger(inputClass.getName()); | |
| logger.setUseParentHandlers(false); // Disable default handlers | |
| logger.setLevel(Level.ALL); | |
| if (logger.getHandlers().length == 0) | |
| { | |
| ConsoleHandler handler = new ConsoleHandler(); | |
| handler.setFormatter(new LogFormatter()); // Your custom formatter | |
| handler.setLevel(Level.ALL); | |
| logger.addHandler(handler); | |
| } | |
| return logger; | |
| } | |
| @Override | |
| public String format(LogRecord record) | |
| { | |
| String timestamp = String.format("%1$tF %1$tT", new java.util.Date(record.getMillis())); | |
| String levelColor; | |
| String levelStr = record.getLevel().toString(); | |
| switch (levelStr) | |
| { | |
| case "SEVERE": | |
| levelColor = RED; | |
| break; | |
| case "WARNING": | |
| levelColor = YELLOW; | |
| break; | |
| case "DEBUG": | |
| levelColor = BLUE; | |
| break; | |
| case "INFO": | |
| levelColor = GREEN; | |
| break; | |
| default: | |
| levelColor = RESET; | |
| break; | |
| } | |
| String levelFormatted = RESET + "[" + levelColor + levelStr + RESET + "]"; | |
| String loggerName = record.getLoggerName(); | |
| String message = record.getMessage(); | |
| // Format: 2024-04-27 12:34:56 [LEVEL] loggerName: message | |
| return String.format("%s %s \t%s: %s%n", BLUE + timestamp, levelFormatted, loggerName, GREEN + message); | |
| } | |
| } | |
| class LogOptions | |
| { | |
| public static final Level DEBUG = new Level("DEBUG", Level.FINE.intValue() + 1) {}; | |
| private final Logger logger; | |
| public LogOptions(Logger logger) | |
| { | |
| this.logger = logger; | |
| } | |
| public void debug(String msg) // cyan | |
| { | |
| logger.log(DEBUG, msg); | |
| } | |
| public void info(String msg) // green | |
| { | |
| logger.info(msg); | |
| } | |
| public void warning(String msg) // yellow | |
| { | |
| logger.warning(msg); | |
| } | |
| public void error(String msg) // red | |
| { | |
| logger.severe(msg); | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment