Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么Eclipse控制台中的某些输出是红色的?_Java_Eclipse_Logging - Fatal编程技术网

Java 为什么Eclipse控制台中的某些输出是红色的?

Java 为什么Eclipse控制台中的某些输出是红色的?,java,eclipse,logging,Java,Eclipse,Logging,我在Eclipse中有不同颜色的控制台输出:红色和黑色 在这种情况下,颜色是什么意思 区别在于System.out v。System.err如果控制台首选项设置是标准设置(换句话说,您没有做任何更改),则红色表示错误 黑色是标准的输出文本颜色 此首选项控制写入标准的文本的颜色 应用程序的输出流 红色是标准错误文本颜色 此首选项控制写入标准的文本的颜色 应用程序的错误流 这是一个老问题,但我已经解决了,下面是我的答案 问题是Eclipse总是以相同的颜色显示stderr输出(在本例中为红色)。它在

我在Eclipse中有不同颜色的控制台输出:红色和黑色

在这种情况下,颜色是什么意思


区别在于System.out v。System.err

如果控制台首选项设置是标准设置(换句话说,您没有做任何更改),则红色表示错误

黑色是标准的输出文本颜色

此首选项控制写入标准的文本的颜色 应用程序的输出流

红色是标准错误文本颜色

此首选项控制写入标准的文本的颜色 应用程序的错误流


这是一个老问题,但我已经解决了,下面是我的答案

问题是Eclipse总是以相同的颜色显示stderr输出(在本例中为红色)。它在设置中是可配置的,但对于所有stderr流,它总是相同的

我的解决方案是为控制台处理程序使用自定义格式化程序,并根据消息级别在每条消息之前插入ANSI颜色代码。因此,我是基于JDK8中原始的
SimpleFormatter.java
。代码如下:

导入java.io.PrintWriter;
导入java.io.StringWriter;
导入java.util.Date;
导入java.util.logging.Formatter;
导入java.util.logging.LogRecord;
公共类CustomFormatter扩展格式化程序{
公共静态最终字符串ANSI_RESET=“\u001B[0m”;
公共静态最终字符串ANSI_RED=“\u001B[31m”;
公共静态最终字符串ANSI_YELLOW=“\u001B[33m”;
公共静态最终字符串ANSI_CYAN=“\u001B[36m”;
私人最终日期dat=新日期();
私有静态最终字符串格式=“%1$s%2$tb%2$td,%2$tY%2$tl:%2$tM:%2$tS%2$Tp%3$s%n%5$s:%6$s%7$s%n”;
@凌驾
公共字符串格式(日志记录){
dat.setTime(record.getMillis());
字符串源;
if(record.getSourceClassName()!=null){
source=record.getSourceClassName();
if(record.getSourceMethodName()!=null){
source+=“”+记录。getSourceMethodName();
}
}否则{
source=record.getLoggerName();
}
字符串消息=格式化消息(记录);
字符串throwable=“”;
if(record.getThrown()!=null){
StringWriter sw=新的StringWriter();
PrintWriter pw=新的PrintWriter(sw);
println();
record.getThrown().printStackTrace(pw);
关闭();
throwable=sw.toString();
}
开关(record.getLevel().toString()){
案例“信息”:
返回String.format(格式,ANSI_青色,dat,source,record.getLoggerName(),
record.getLevel().getLocalizedName(),message+ANSI_RESET,可丢弃);
案例“警告”:
返回String.format(格式,ANSI_YELLOW,dat,source,record.getLoggerName(),
record.getLevel().getLocalizedName(),message+ANSI_RESET,可丢弃);
“严重”病例:
返回String.format(格式,ANSI_RED,dat,source,record.getLoggerName(),
record.getLevel().getLocalizedName(),message+ANSI_RESET,可丢弃);
违约:
返回String.format(format,dat,source,record.getLoggerName(),
record.getLevel().getLocalizedName(),消息,可丢弃);
}
}
}
先决条件
  • 对于Eclipse,您将需要它,以便Eclipse控制台能够解释ANSI转义码。安装它并重新启动Eclipse

  • 上面的代码编译并压缩成.jar文件:

  • 将上述代码另存为
    CustomFormatter.java
  • 使用
    javaccustomformatter.java编译它
  • 使用
    JAR cfv CustomFormatter.JAR CustomFormatter.Class
    创建一个包含类文件的JAR文件,并将其保存在所需的任何文件夹中(例如,在
    C:\java\CustomFormatter
    中)
说明书
  • 转到
    窗口-->首选项-->Ansi控制台
    并选中
    尝试对stderr输出使用标准错误颜色设置
    ,然后
    应用并关闭
  • 编辑
    logging.properties
    文件,该文件位于JRE的
    lib
    文件夹中。您的计算机中可能有多个文件,您应该编辑与Eclipse正在使用的JRE版本相对应的文件。您可以通过阅读“控制台”下面的内容来知道正在使用哪一个文件Eclipse中的选项卡:

  • 用文本编辑器打开
    logging.properties
    。在我的例子中,我将编辑
    C:\ProgramFiles\Java\jre1.8.0\u 231\lib\logging.properties
  • 您应该更改
    java.util.logging.ConsoleHandler.formatter
    值(在我的示例中是第44行),使其等于
    CustomFormatter
    与此完全相同:
    java.util.logging.ConsoleHandler.formatter=CustomFormatter
    。请确保保存更改
  • 添加
    CustomFormatter.jar
    作为Eclipse中的JRE系统库

  • 转到
    窗口-->首选项-->Java-->安装的JRE
  • 选择您正在使用的JRE,单击
    Edit
    添加外部JAR…
  • 转到您保存的文件夹
    CustomFormatter.jar
    ,然后选择它
  • 确保它位于系统库列表中,然后单击
    Finish
    Apply并关闭
  • 就是这样。您现在应该为每个记录器级别使用不同的颜色。青色表示信息,黄色表示警告,红色表示严重。您可以通过修改上面的代码将其更改为任何颜色。它适用于java 8和Eclipse 2019-12:

注意:如果正常标准文本显示为蓝色、红色或黄色,请尝试