scala - 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")
}
}
谢谢
解决方案
JavaEE/Spring MVC 应用程序自动装配 ThreadPool 关闭。在您的情况下,当应用程序应该退出时,您必须自己触发它:
SDKShutdownActivity.INSTANCE.stopAll()
推荐阅读
- java - 对集合中选定项目的操作
- python-3.x - Python:如果文件不以 " 结尾,则向上移动下面的行
- wcf - WCF 服务 - 证书未到达服务器
- node.js - Bot Framework 机器人在模拟器中工作,但在部署的机器人上获得 Microsoft.Bot.ChannelConnector.BotAPI.ThrowOnFailedStatusCode
- android - Android运营商应用e-sim激活码使用
- objective-c - 无法将 view.tag ObjC 代码转换为 Swift
- python - 检查 URL 是否有效/存在的最有效方法是什么?
- c# - C# Google Sheets API 获取某个值的行
- java - okhttp 连接线程太多
- php - 将月份名称转换为不同语言的数字?