JAVA代码如何设置SPARK的日志打印级别

问题场景:在使用spark sql 增加where条件过滤时,会出现打印很多的被过滤掉的记录(几十万条),导致跑spark sql 特别慢!

var df2 = sqc.sql("SELECT * FROM T_COMMISIONRATEDEF WHERE T_INSURANCETYPE = '630' ORDER BY T_INSURANCETYPE DESC " )


执行时,打印截图:


解决方法

设置spark 的日志级别,不打印过滤INFO信息


1)代码中使用呢代理设置:关键参考代码如下


import org.apache.log4j.Level

import org.apache.log4j.Level

Logger.getLogger("org.apache.spark").setLevel(Level.ERROR)
Logger.getLogger("org.apache.hadoop").setLevel(Level.ERROR)
Logger.getLogger("org.apache.zookeeper").setLevel(Level.ERROR)


代码截图:







<think>我们正在处理的问题:如何在IntelliJIDEA中配置日志级别以关闭INFO日志输出。参考了上述引用,特别是引用[4]和引用[5],其中提到:-修改log4j.properties文件,将rootCategory从INFO改为ERROR或WARN,从而只显示更高级别日志(如ERROR或WARN)。-具体操作:找到log4j.properties文件(或者修改模板文件并重命名),将`log4j.rootCategory=INFO,console`改为`log4j.rootCategory=ERROR,console`或`log4j.rootCategory=WARN,console`。另外,引用[1]提供了日志级别的定义:从严重到普通依次是:OFF,FATAL,ERROR,WARN,INFO,DEBUG,TRACE,ALL。我们想要关闭INFO级别,那么至少应该设置成比INFO更高的级别,例如WARN、ERROR、FATAL或OFF。根据引用[2]和[3],我们知道不同的日志实现(如Log4j、Logback等)配置方式可能不同。在IDEA中运行的程序,可能使用了不同的日志框架,但引用[4][5]都提到了修改log4j.properties文件,因此我们假设使用Log4j作为日志实现。步骤:1.在项目中找到log4j配置文件(通常名为log4j.properties或log4j.xml)。2.修改日志级别:将rootlogger级别改为WARN或ERROR。-例如,在log4j.properties中,找到类似这样的行:`log4j.rootLogger=INFO,console`,将`INFO`改为`WARN`或`ERROR`。3.如果项目中还没有log4j配置文件,则需要创建一个(可以复制模板并重命名,如引用[5]中提到的log4j.properties.template重命名为log4j.properties)。但注意,如果使用的是其他日志框架(如Logback),则需要修改logback.xml文件,例如:-在logback.xml中,可以设置rootlevel为WARN:`<rootlevel="WARN">`然而,用户问题中明确提到了IDEA,并且引用[4][5]都是关于在IDEA中修改Log4j的配置,所以我们优先按照Log4j的配置方法来回答。除了修改配置文件,还可以在代码设置日志级别,但这种方式需要修改源代码并重新编译,通常不推荐,因为配置文件的方式更灵活。因此,总结在IntelliJIDEA中关闭INFO日志输出的步骤:步骤1:定位日志配置文件在项目资源目录(如src/main/resources)下找到log4j.properties文件(也可能是log4j.xml,具体看使用哪种配置)。步骤2:修改日志级别使用文本编辑器打开log4j.properties,修改rootLogger级别,例如:原始:log4j.rootLogger=INFO,stdout修改:log4j.rootLogger=ERROR,stdout#或者WARN步骤3:保存并重新运行保存修改,然后重新运行程序,即可看到只有ERROR(或WARN)及以上级别日志被输出。如果项目中没有log4j.properties,可以创建一个。内容示例如下:log4j.rootLogger=ERROR,stdoutlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d%p[%c]-%m%n另外,引用[5]提到,如果是Spark程序的本地模式运行,可能需要修改log4j.properties.template文件,将其重命名为log4j.properties,然后修改。这是因为Spark默认使用log4j.properties.template,只有重命名为log4j.properties才会生效。如果项目使用的是其他日志框架,比如Logback,则需要在classpath下(通常是src/main/resources目录)找到logback.xml文件,并修改:<rootlevel="WARN"><!--或ERROR--><appender-refref="CONSOLE"/></root>因此,我们首先需要确定项目使用的是哪种日志框架,然后再进行相应的配置。生成相关问题:1.如何确定项目使用的是哪种日志框架?2.在IDEA中如何快速定位日志配置文件?3.除了修改配置文件,还有哪些方式可以动态调整日志级别?4.Spark项目中如何配置日志级别以关闭INFO日志?5.如何为不同的包设置不同的日志级别?注意:如果用户没有使用Log4j,而是使用其他框架(如java.util.logging),则需要不同的配置方法(如引用[3]提到JavaUtilLogging在启动时配置,且修改不便)。但根据引用[4][5],我们主要针对的是Log4j。因此,回答的重点是修改Log4j的配置文件。</think> ### 如何在 IntelliJ IDEA 中配置日志级别以关闭 INFO 日志输出 根据引用内容,可通过以下两种方法实现 **关闭 INFO 日志、仅显示 ERROR 级别日志**: #### 🔧 方法 1:修改 log4j.properties 文件(推荐) 1. **定位配置文件** 在项目 `src/main/resources` 目录下找到 `log4j.properties` 文件 *若文件不存在,可将模板文件 `log4j.properties.template` 重命名为 `log4j.properties`* [^5] 2. **修改日志级别** 打开文件并修改以下配置: ```properties # 原始配置(显示INFO及以上级别) log4j.rootCategory=INFO, console # 修改为(仅显示ERROR级别) log4j.rootCategory=ERROR, console ``` *将 `INFO` 替换为 `ERROR` 或 `WARN`,即可关闭所有 INFO 日志* [^4][^5] 3. **重启应用生效** 保存文件后重新运行程序 #### ⚙️ 方法 2:运行时参数配置(适用 Java Util Logging) 1. **添加 JVM 参数** 在 IDEA 运行配置的 `VM options` 中添加: ```bash -Djava.util.logging.config.file=/path/to/logging.properties ``` 2. **配置 logging.properties** 在指定文件中设置: ```properties .level = WARNING # 设置全局日志级别为 WARNING ``` *此方法在 JVM 启动后无法动态修改* [^3] --- ### 📝 关键说明 1. **日志级别关系** `OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL` 将级别设为 `ERROR` 会屏蔽所有低于 ERROR 的日志(含 INFO)[^1] 2. **框架适配性** - ✅ **Log4j/Logback**:优先使用方法 1 - ⚠️ **Java Util Logging**:只能通过 JVM 启动参数配置 [^3] 3. **验证效果** 修改后检查控制台输出,正常状态下应 **仅显示 ERROR 级别日志**,类似: ``` [ERROR] Connection timeout ``` --- ### 🔍 相关问题 1. 如何在保留文件日志的同时关闭控制台 INFO 输出? 2. Logback 框架在 IDEA 中如何动态调整日志级别? 3. 为什么修改 log4j.properties 后日志配置未生效? 4. 如何在 Spark 本地调试时过滤冗余 INFO 日志? 5. 日志级别 ERROR 和 WARN 在实际开发中应如何选择? [^1]: 日志级别定义标准(OFF > ERROR > INFO) [^3]: Java Util Logging 的配置限制 [^4]: IDEA 修改 log4j.properties 实践 [^5]: Spark 本地模式日志配置案例
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值