在IntelliJ IDEA中运行Scala代码时如何过滤红色日志,仅查看自定义打印内容
过滤IntelliJ IDEA中Scala/Spark运行时的冗余日志,只保留自定义println输出
我太懂这种被一堆红色Spark日志淹没自己输出的烦躁了!明明只想看自己println的内容,结果全是各种INFO SparkContext这类系统日志,下面给你几个实用的解决办法:
方法1:修改Spark日志配置文件(持久化方案)
创建一个log4j.properties文件,把它放到项目的src/main/resources目录下,内容如下:
log4j.rootLogger=ERROR, console log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.target=System.out log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
这个配置把全局日志级别设为ERROR,只有错误级别的系统日志才会输出,那些INFO级别的红色日志会被直接过滤掉,而你用println输出的内容是直接打印到System.out的,完全不受影响。
方法2:代码中动态设置日志级别(快速调试方案)
如果不想加配置文件,可以在初始化SparkContext之前,直接在代码里加上这段日志级别设置:
import org.apache.log4j.{Level, Logger} // 过滤掉org和akka包下的INFO及以下级别日志 Logger.getLogger("org").setLevel(Level.ERROR) Logger.getLogger("akka").setLevel(Level.ERROR)
这样运行时就只会输出ERROR级别的系统日志,你的自定义println内容会清晰显示在输出窗口里。
方法3:用IntelliJ自带的输出过滤功能(临时过滤方案)
如果只是临时想过滤日志,不用改代码或配置,直接用IntelliJ Run窗口的过滤功能:
- 点击Run窗口右上角的漏斗图标(Filter)
- 选择「Edit Filter Configuration」
- 可以添加包含规则(比如只显示包含你自定义输出关键词的内容),或者排除规则(比如排除包含
INFO SparkContext的日志) - 也可以直接选择「Show only application logs」,让IntelliJ自动过滤掉框架级别的日志
内容的提问来源于stack exchange,提问作者JetS79
相关产品推荐
相关产品推荐

