使用此堆栈问题中的以下代码:Change color and format of java.util.logging.Logger output in Eclipse
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Formatter;
import java.util.logging.LogRecord;
public class LogFormatter extends Formatter
{
// ANSI escape code
public static final String ANSI_RESET = "\u001B[0m";
public static final String ANSI_BLACK = "\u001B[30m";
public static final String ANSI_RED = "\u001B[31m";
public static final String ANSI_GREEN = "\u001B[32m";
public static final String ANSI_YELLOW = "\u001B[33m";
public static final String ANSI_BLUE = "\u001B[34m";
public static final String ANSI_PURPLE = "\u001B[35m";
public static final String ANSI_CYAN = "\u001B[36m";
public static final String ANSI_WHITE = "\u001B[37m";
// Here you can configure the format of the output and
// its color by using the ANSI escape codes defined above.
// format is called for every console log message
@Override
public String format(LogRecord record)
{
// This example will print date/time, class, and log level in yellow,
// followed by the log message and it's parameters in white .
StringBuilder builder = new StringBuilder();
builder.append(ANSI_YELLOW);
builder.append("[");
builder.append(calcDate(record.getMillis()));
builder.append("]");
builder.append(" [");
builder.append(record.getSourceClassName());
builder.append("]");
builder.append(" [");
builder.append(record.getLevel().getName());
builder.append("]");
builder.append(ANSI_WHITE);
builder.append(" - ");
builder.append(record.getMessage());
Object[] params = record.getParameters();
if (params != null)
{
builder.append("\t");
for (int i = 0; i < params.length; i++)
{
builder.append(params[i]);
if (i < params.length - 1)
builder.append(", ");
}
}
builder.append(ANSI_RESET);
builder.append("\n");
return builder.toString();
}
private String calcDate(long millisecs) {
SimpleDateFormat date_format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date resultdate = new Date(millisecs);
return date_format.format(resultdate);
}
}
我可以使用以下颜色的日志文件:
但是,如果日志严重性为警告,严重或信息,我希望使用其他颜色。有没有一种方法可以不为每个严重性创建一个
Logger
对象? 最佳答案
我认为您可以检查level
上的日志LogRecord
,并根据format
方法中的级别使用不同的ansi代码:
@Override
public String format(LogRecord record)
{
StringBuilder builder = new StringBuilder();
Level level = record.getLevel();
if(level == Level.INFO) {
builder.append(ANSI_GREEN);
} else if(level == Level.WARNING) {
builder.append(ANSI_YELLOW);
} else if(level == Level.SEVERE) {
builder.append(ANSI_RED);
} else {
builder.append(ANSI_WHITE);
}
builder.append("[");
builder.append(calcDate(record.getMillis()));
builder.append("]");
...
}