package ilarkesto.core.logging; import ilarkesto.core.base.Str; import ilarkesto.core.logging.Log.Level; public class LogRecord { public final String name; public final Level level; public final Object[] parameters; public String context; public LogRecord(String name, Level level, Object[] parameters) { super(); this.name = name; this.level = level; this.parameters = parameters; } @Override public String toString() { String nameFormated = Str.cutLeft(name, 20); nameFormated = Str.fillUpRight(nameFormated, " ", 20); StringBuilder sb = new StringBuilder(); // level if ((level != Level.DEBUG) && (level != Level.INFO)) sb.append("\n "); if (level != Level.DEBUG) sb.append(level); // logger sb.append(" ").append(nameFormated); // text StringBuilder text = new StringBuilder(); if (parameters == null) { text.append(" <null>"); } else { for (Object parameter : parameters) { text.append(' '); if (parameter instanceof Throwable) { text.append("\n").append(Str.getStackTrace((Throwable) parameter)); } else { text.append(Str.format(parameter)); } } } sb.append(Str.fillUpRight(text.toString(), " ", 100)); // context if (context != null) sb.append(" | ").append(context); // extra line for high prio logs if ((level != Level.DEBUG) && (level != Level.INFO)) sb.append('\n'); return sb.toString(); } }