
最近发现由Azure Datafactory触发的定时Azure Databricks job会是不是的失败,job的log里也出现了格式各样的错误信息。于是就给微软开了单子,微软Azure Databricks的技术支持查看了一番后台信息,说我用的Azure Databricks Runtime 7.4这个版本他们已经不再支持了,建议我升级到最新的LTS版本。
虽然我知道:

官方技术支持都这么说了,那就升级。
但是升级之后,发现了一个问题:原来Output页面的日志不再显示了
以前正常日志输出是这样的:

现在升级到最新的Azure Databricks Runtime 11.3 LTS之后是这样:

然后就反馈给微软技术支持,后来问我Scala代码里用的是哪个版本的Log4J,是否和Azure Databricks cluster上的Log4J有冲突。
那今天就分享一下如何查看Azure Databricks cluster上Log4J的版本。
特地去Maven上查了一下,Apache Log4j这个包最后更新日期是2012年5月26,但是usages是最高的。

页面上也提示了,推荐使用Log4J 2,其实就是Apache Log4j Core和 Apache Log4j API两个包配合使用。
其它不多说了,开始查看Azure Databricks cluster上的Log4J 2的版本号:
第一步:新建一个cluster
第二步:新建一个Scala Notebook
第三步:复制下面的代码到你的Notebook
{import scala.util.{Try, Success, Failure}import java.lang.ClassNotFoundExceptionTry(Class.forName("org.apache.logging.log4j.core.Logger", false, this.getClass.getClassLoader)) match {case Success(loggerCls) =>Option(loggerCls.getPackage) match {case Some(pkg) =>println(s"Version: ${pkg.getSpecificationTitle} ${pkg.getSpecificationVersion}")case None =>println("Could not determine Log4J 2 version")}case Failure(e: ClassNotFoundException) =>println("Could not load Log4J 2 class")case Failure(e) =>println(s"Unexpected Error: $e")throw e}}
运行上面代码,如果有安装Log4J Core包的话,就会输出版本号:
Version: Apache Log4j Core 2.18.0
关于在Scala里如何配置使用Log4J
点击关注本公众号,且听下回分解!
👇
文章转载自BPShare,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




