首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java :对于每个严重级别有不同的输出颜色

Java :对于每个严重级别有不同的输出颜色
EN

Stack Overflow用户
提问于 2019-10-01 09:40:50
回答 1查看 770关注 0票数 2

使用此堆栈问题中的以下代码:Change color and format of java.util.logging.Logger output in Eclipse

代码语言:javascript
复制
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对象的严重性?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-01 10:03:33

我认为您可以检查LogRecord上的日志LogRecord,并根据format方法中的级别使用不同的ansi代码:

代码语言:javascript
复制
@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("]");

    ...

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58182071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档