暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

如何查看Databricks上Log4J包版本

BPShare 2022-12-08
370

最近发现由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,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论