[main] Enhance StdoutLogger
This commit is contained in:
parent
578f5d4056
commit
846766e3de
|
@ -4,6 +4,7 @@ import io.gitlab.jfronny.commons.*;
|
|||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Function;
|
||||
|
||||
|
@ -99,6 +100,13 @@ public interface Logger {
|
|||
|
||||
default String format(String msg, Throwable t) {
|
||||
if (t == null) return msg;
|
||||
return msg + System.lineSeparator() + t;
|
||||
try (ByteArrayOutputStream baot = new ByteArrayOutputStream()) {
|
||||
try (PrintStream ps = new PrintStream(baot, true)) {
|
||||
t.printStackTrace(ps);
|
||||
}
|
||||
return msg + System.lineSeparator() + baot;
|
||||
} catch (IOException e) {
|
||||
return msg + System.lineSeparator() + t;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,76 @@
|
|||
package io.gitlab.jfronny.commons.log;
|
||||
|
||||
public class OutputColors {
|
||||
// Reset
|
||||
public static final String RESET = "\033[0m"; // Text Reset
|
||||
|
||||
// Regular Colors
|
||||
public static final String BLACK = "\033[0;30m"; // BLACK
|
||||
public static final String RED = "\033[0;31m"; // RED
|
||||
public static final String GREEN = "\033[0;32m"; // GREEN
|
||||
public static final String YELLOW = "\033[0;33m"; // YELLOW
|
||||
public static final String BLUE = "\033[0;34m"; // BLUE
|
||||
public static final String PURPLE = "\033[0;35m"; // PURPLE
|
||||
public static final String CYAN = "\033[0;36m"; // CYAN
|
||||
public static final String WHITE = "\033[0;37m"; // WHITE
|
||||
|
||||
// Bold
|
||||
public static final String BLACK_BOLD = "\033[1;30m"; // BLACK
|
||||
public static final String RED_BOLD = "\033[1;31m"; // RED
|
||||
public static final String GREEN_BOLD = "\033[1;32m"; // GREEN
|
||||
public static final String YELLOW_BOLD = "\033[1;33m"; // YELLOW
|
||||
public static final String BLUE_BOLD = "\033[1;34m"; // BLUE
|
||||
public static final String PURPLE_BOLD = "\033[1;35m"; // PURPLE
|
||||
public static final String CYAN_BOLD = "\033[1;36m"; // CYAN
|
||||
public static final String WHITE_BOLD = "\033[1;37m"; // WHITE
|
||||
|
||||
// Underline
|
||||
public static final String BLACK_UNDERLINED = "\033[4;30m"; // BLACK
|
||||
public static final String RED_UNDERLINED = "\033[4;31m"; // RED
|
||||
public static final String GREEN_UNDERLINED = "\033[4;32m"; // GREEN
|
||||
public static final String YELLOW_UNDERLINED = "\033[4;33m"; // YELLOW
|
||||
public static final String BLUE_UNDERLINED = "\033[4;34m"; // BLUE
|
||||
public static final String PURPLE_UNDERLINED = "\033[4;35m"; // PURPLE
|
||||
public static final String CYAN_UNDERLINED = "\033[4;36m"; // CYAN
|
||||
public static final String WHITE_UNDERLINED = "\033[4;37m"; // WHITE
|
||||
|
||||
// Background
|
||||
public static final String BLACK_BACKGROUND = "\033[40m"; // BLACK
|
||||
public static final String RED_BACKGROUND = "\033[41m"; // RED
|
||||
public static final String GREEN_BACKGROUND = "\033[42m"; // GREEN
|
||||
public static final String YELLOW_BACKGROUND = "\033[43m"; // YELLOW
|
||||
public static final String BLUE_BACKGROUND = "\033[44m"; // BLUE
|
||||
public static final String PURPLE_BACKGROUND = "\033[45m"; // PURPLE
|
||||
public static final String CYAN_BACKGROUND = "\033[46m"; // CYAN
|
||||
public static final String WHITE_BACKGROUND = "\033[47m"; // WHITE
|
||||
|
||||
// High Intensity
|
||||
public static final String BLACK_BRIGHT = "\033[0;90m"; // BLACK
|
||||
public static final String RED_BRIGHT = "\033[0;91m"; // RED
|
||||
public static final String GREEN_BRIGHT = "\033[0;92m"; // GREEN
|
||||
public static final String YELLOW_BRIGHT = "\033[0;93m"; // YELLOW
|
||||
public static final String BLUE_BRIGHT = "\033[0;94m"; // BLUE
|
||||
public static final String PURPLE_BRIGHT = "\033[0;95m"; // PURPLE
|
||||
public static final String CYAN_BRIGHT = "\033[0;96m"; // CYAN
|
||||
public static final String WHITE_BRIGHT = "\033[0;97m"; // WHITE
|
||||
|
||||
// Bold High Intensity
|
||||
public static final String BLACK_BOLD_BRIGHT = "\033[1;90m"; // BLACK
|
||||
public static final String RED_BOLD_BRIGHT = "\033[1;91m"; // RED
|
||||
public static final String GREEN_BOLD_BRIGHT = "\033[1;92m"; // GREEN
|
||||
public static final String YELLOW_BOLD_BRIGHT = "\033[1;93m";// YELLOW
|
||||
public static final String BLUE_BOLD_BRIGHT = "\033[1;94m"; // BLUE
|
||||
public static final String PURPLE_BOLD_BRIGHT = "\033[1;95m";// PURPLE
|
||||
public static final String CYAN_BOLD_BRIGHT = "\033[1;96m"; // CYAN
|
||||
public static final String WHITE_BOLD_BRIGHT = "\033[1;97m"; // WHITE
|
||||
|
||||
// High Intensity backgrounds
|
||||
public static final String BLACK_BACKGROUND_BRIGHT = "\033[0;100m";// BLACK
|
||||
public static final String RED_BACKGROUND_BRIGHT = "\033[0;101m";// RED
|
||||
public static final String GREEN_BACKGROUND_BRIGHT = "\033[0;102m";// GREEN
|
||||
public static final String YELLOW_BACKGROUND_BRIGHT = "\033[0;103m";// YELLOW
|
||||
public static final String BLUE_BACKGROUND_BRIGHT = "\033[0;104m";// BLUE
|
||||
public static final String PURPLE_BACKGROUND_BRIGHT = "\033[0;105m"; // PURPLE
|
||||
public static final String CYAN_BACKGROUND_BRIGHT = "\033[0;106m"; // CYAN
|
||||
public static final String WHITE_BACKGROUND_BRIGHT = "\033[0;107m"; // WHITE
|
||||
}
|
|
@ -1,12 +1,27 @@
|
|||
package io.gitlab.jfronny.commons.log;
|
||||
|
||||
import java.time.LocalTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
||||
public class StdoutLogger implements Logger {
|
||||
private final String name;
|
||||
private final String prefix;
|
||||
private final boolean color;
|
||||
private final boolean thread;
|
||||
private final boolean timestamp;
|
||||
|
||||
public StdoutLogger(String name) {
|
||||
this(name, false);
|
||||
}
|
||||
|
||||
public StdoutLogger(String name, boolean color) {
|
||||
this(name, color, false, false);
|
||||
}
|
||||
|
||||
public StdoutLogger(String name, boolean color, boolean thread, boolean timestamp) {
|
||||
this.name = name;
|
||||
this.prefix = "[" + name + "] ";
|
||||
this.color = color;
|
||||
this.thread = thread;
|
||||
this.timestamp = timestamp;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -14,13 +29,74 @@ public class StdoutLogger implements Logger {
|
|||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void trace(String msg) {
|
||||
System.out.println(generateMessage(msg, Level.TRACE));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void debug(String msg) {
|
||||
System.out.println(generateMessage(msg, Level.DEBUG));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void info(String msg) {
|
||||
System.out.println(prefix + msg);
|
||||
System.out.println(generateMessage(msg, Level.INFO));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void warn(String msg) {
|
||||
System.err.println(prefix + msg);
|
||||
System.out.println(generateMessage(msg, Level.WARN));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void error(String msg) {
|
||||
System.out.println(generateMessage(msg, Level.ERROR));
|
||||
}
|
||||
|
||||
private String generateMessage(String msg, Level level) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
// Timestamp
|
||||
if (this.timestamp) {
|
||||
sb.append(DateTimeFormatter.ofPattern("HH:mm:ss.SSS").format(LocalTime.now())).append(' ');
|
||||
}
|
||||
// Thread name
|
||||
if (this.thread) {
|
||||
String thread = Thread.currentThread().getName();
|
||||
if (this.color) {
|
||||
sb.append(OutputColors.CYAN_BOLD).append(thread).append(OutputColors.RESET).append(' ');
|
||||
} else {
|
||||
sb.append('{').append(thread).append("} ");
|
||||
}
|
||||
}
|
||||
// Logger name
|
||||
if (this.color) {
|
||||
sb.append(OutputColors.GREEN_BOLD).append(name).append(OutputColors.RESET).append(' ');
|
||||
} else {
|
||||
sb.append('(').append(name).append(") ");
|
||||
}
|
||||
// Level
|
||||
if (this.color) {
|
||||
sb.append(level.color).append(level.name()).append(OutputColors.RESET).append(' ');
|
||||
} else {
|
||||
sb.append(level.name().charAt(0)).append(' ');
|
||||
}
|
||||
// Message
|
||||
sb.append(msg);
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
private enum Level {
|
||||
TRACE(OutputColors.WHITE),
|
||||
DEBUG(OutputColors.WHITE),
|
||||
INFO(OutputColors.BLUE),
|
||||
WARN(OutputColors.RED),
|
||||
ERROR(OutputColors.RED_BOLD);
|
||||
|
||||
public final String color;
|
||||
|
||||
Level(String color) {
|
||||
this.color = color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue