首页 > 解决方案 > Application Insights log4j appender 不退出

问题描述

我一直在尝试使用 Application Insights log4j v1.2 appender 将我的 scala 控制台应用程序的日志推送到 Application Insights。它按预期工作,但最后,应用程序没有退出。我需要关闭任何连接才能退出应用程序吗?有人可以帮我解决这个问题吗?我不能使用System.exit(0),或者Thread.interrupt()因为这会导致我的 Spark 应用程序在集群上失败。

下面是我的源代码:

AILogger.scala:

import org.apache.log4j.{ Logger, Level, MDC }
import java.time.LocalDateTime
import com.microsoft.applicationinsights.log4j.v1_2.ApplicationInsightsAppender

object AILogger {
  var rootLogger = Logger.getRootLogger()
  var ai = new ApplicationInsightsAppender()
  ai.setInstrumentationKey("Insert IKey here")
  ai.activateOptions()


  @transient lazy val logger = Logger.getLogger(this.getClass)
  logger.setLevel(Level.INFO)
  rootLogger.addAppender(ai)
  rootLogger.setLevel(Level.ERROR)

  def info(message: String): Unit = {
    logger.info(message)
  }
}

AILoggerTest.scala:

import java.time.LocalDateTime

object AILoggerTest {
  def main(args: Array[String]) {

    AILogger.info("logging to AI " + LocalDateTime.now())
    System.out.println("Completed")      
  }
}

在此处输入图像描述

谢谢

标签: scalalog4jazure-application-insightsappender

解决方案


JavaEE/Spring MVC 应用程序自动装配 ThreadPool 关闭。在您的情况下,当应用程序应该退出时,您必须自己触发它:

SDKShutdownActivity.INSTANCE.stopAll()

推荐阅读