ITPub博客

首页 > 数据库 > 数据库开发技术 > 如何查看Databricks上Log4J包版本

如何查看Databricks上Log4J包版本

原创 数据库开发技术 作者:招牌鸡蛋面 时间:2022-12-08 20:11:00 0 删除 编辑

最近发现由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.ClassNotFoundException  Try(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;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论
干过测试,做过运维,还兼职过售前+投标+实施+售后+客户培训。前两年入坑大数据开发,熟悉Azure + Databricks大数据相关产品。 喜欢研究技术,所以搞了一个公众号:BPShare,分享一些经验和心得。欢迎骚扰~~~

注册时间:2020-02-17

  • 博文量
    90
  • 访问量
    44234