Skip to content

Instantly share code, notes, and snippets.

@sudo-adduser-jordan
Created September 4, 2025 00:44
Show Gist options
  • Select an option

  • Save sudo-adduser-jordan/5b534e06dc2730efdf81d9f6d718b359 to your computer and use it in GitHub Desktop.

Select an option

Save sudo-adduser-jordan/5b534e06dc2730efdf81d9f6d718b359 to your computer and use it in GitHub Desktop.
LogFormatter.java
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