From cab32f0e434df30513a702269b6081187556b5dc Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Wed, 14 Nov 2018 12:16:14 +0300 Subject: [PATCH] Print stacktrace to Gradle logger instead of writing directly to stderr --- .../compilerRunner/GradleKotlinCompilerWork.kt | 14 ++++++-------- .../jetbrains/kotlin/gradle/utils/errorUtils.kt | 15 +++++++++++++++ 2 files changed, 21 insertions(+), 8 deletions(-) create mode 100644 libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/errorUtils.kt diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerWork.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerWork.kt index 0b9a4dab1bc..ccc2af96221 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerWork.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerWork.kt @@ -17,13 +17,11 @@ import org.jetbrains.kotlin.gradle.plugin.kotlinDebug import org.jetbrains.kotlin.gradle.tasks.GradleMessageCollector import org.jetbrains.kotlin.gradle.tasks.clearLocalStateDirectories import org.jetbrains.kotlin.gradle.tasks.throwGradleExceptionIfError +import org.jetbrains.kotlin.gradle.utils.stackTraceAsString import org.jetbrains.kotlin.incremental.ChangedFiles import org.jetbrains.kotlin.incremental.DELETE_MODULE_FILE_PROPERTY import org.slf4j.LoggerFactory -import java.io.ByteArrayOutputStream -import java.io.File -import java.io.PrintStream -import java.io.Serializable +import java.io.* import java.net.URLClassLoader import java.rmi.RemoteException import javax.inject.Inject @@ -155,8 +153,8 @@ internal class GradleKotlinCompilerWork @Inject constructor( log.isDebugEnabled ) } catch (e: Throwable) { - log.warn("Caught an exception trying to connect to Kotlin Daemon") - e.printStackTrace() + log.error("Caught an exception trying to connect to Kotlin Daemon:") + log.error(e.stackTraceAsString()) null } if (connection == null) { @@ -183,8 +181,8 @@ internal class GradleKotlinCompilerWork @Inject constructor( } exitCodeFromProcessExitCode(log, res.get()) } catch (e: Throwable) { - log.warn("Compilation with Kotlin compile daemon was not successful") - e.printStackTrace() + log.error("Compilation with Kotlin compile daemon was not successful") + log.error(e.stackTraceAsString()) null } // todo: can we clear cache on the end of session? diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/errorUtils.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/errorUtils.kt new file mode 100644 index 00000000000..682947db5e3 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/errorUtils.kt @@ -0,0 +1,15 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.gradle.utils + +import java.io.PrintWriter +import java.io.StringWriter + +internal fun Throwable.stackTraceAsString(): String { + val writer = StringWriter() + printStackTrace(PrintWriter(writer)) + return writer.toString() +} \ No newline at end of file