You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Databricks的Scala代码中添加自定义日志输出?

Databricks Scala Notebook 自定义日志不输出到Log4j的解决方法

核心原因

Databricks集群默认Log4j配置仅输出INFO及以上级别的日志,且未配置自定义Logger的输出规则,你代码中使用的debug级别日志默认会被拦截。

具体解决方案

1. 调整日志级别输出

你可以选择调高日志输出级别,或者临时修改自定义Logger的级别允许debug日志输出,代码示例如下:

import com.typesafe.scalalogging.Logger
import org.slf4j.LoggerFactory
import org.apache.log4j.{Level, Logger => Log4jLogger}

// 为自定义Logger开启DEBUG级别权限
Log4jLogger.getLogger("TheLoggerName").setLevel(Level.DEBUG)

val logger = Logger(LoggerFactory.getLogger("TheLoggerName"))
logger.debug("****************************************************************** Useful message....")
// 不想调整级别的话,直接使用INFO级别输出也可以,默认不会被拦截
logger.info("****************************************************************** 普通信息级别的日志")

2. 查看日志的正确位置

Notebook中直接运行的代码默认在Driver节点执行,对应的Log4j日志可以通过两个路径查看:

  • 集群UI的驱动程序日志标签下的Log4j分类
  • 直接在Notebook中执行命令读取落盘日志文件:
%sh
grep "Useful message" /databricks/driver/logs/log4j-active.log

3. 适配Executor日志输出

如果你的日志打印逻辑写在会分发到Executor执行的算子(如map、foreach等)内部,需要在集群Spark配置中添加如下参数,重启集群后生效:

spark.executor.extraJavaOptions -Dlog4j.logger.TheLoggerName=DEBUG

内容的提问来源于stack exchange,提问作者boom_clap

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 18:27:03