[Gradle] Unify a bit logic of retrieving task loggers

This commit is contained in:
Alexander.Likhachev
2023-10-18 01:30:48 +02:00
committed by Space Team
parent b1ec2eb18a
commit 1556925358
3 changed files with 21 additions and 26 deletions
@@ -19,6 +19,7 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
import org.jetbrains.kotlin.gradle.logging.* import org.jetbrains.kotlin.gradle.logging.*
import org.jetbrains.kotlin.gradle.plugin.internal.state.TaskExecutionResults import org.jetbrains.kotlin.gradle.plugin.internal.state.TaskExecutionResults
import org.jetbrains.kotlin.gradle.plugin.internal.state.TaskLoggers import org.jetbrains.kotlin.gradle.plugin.internal.state.TaskLoggers
import org.jetbrains.kotlin.gradle.plugin.internal.state.getTaskLogger
import org.jetbrains.kotlin.gradle.report.* import org.jetbrains.kotlin.gradle.report.*
import org.jetbrains.kotlin.gradle.tasks.* import org.jetbrains.kotlin.gradle.tasks.*
import org.jetbrains.kotlin.gradle.utils.stackTraceAsString import org.jetbrains.kotlin.gradle.utils.stackTraceAsString
@@ -109,18 +110,7 @@ internal class GradleKotlinCompilerWork @Inject constructor(
private val kotlinPluginVersion = config.kotlinPluginVersion private val kotlinPluginVersion = config.kotlinPluginVersion
private val kotlinLanguageVersion = config.kotlinLanguageVersion private val kotlinLanguageVersion = config.kotlinLanguageVersion
private val log: KotlinLogger = private val log: KotlinLogger = getTaskLogger(taskPath, null, "GradleKotlinCompilerWork")
TaskLoggers.get(taskPath)?.let { GradleKotlinLogger(it).apply { debug("Using '$taskPath' logger") } }
?: run {
val logger = LoggerFactory.getLogger("GradleKotlinCompilerWork")
val kotlinLogger = if (logger is Logger) {
GradleKotlinLogger(logger)
} else SL4JKotlinLogger(logger)
kotlinLogger.apply {
debug("Could not get logger for '$taskPath'. Falling back to sl4j logger")
}
}
private val isIncremental: Boolean private val isIncremental: Boolean
get() = incrementalCompilationEnvironment != null get() = incrementalCompilationEnvironment != null
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.gradle.logging.SL4JKotlinLogger
import org.jetbrains.kotlin.gradle.plugin.BuildFinishedListenerService import org.jetbrains.kotlin.gradle.plugin.BuildFinishedListenerService
import org.jetbrains.kotlin.gradle.plugin.internal.BuildIdService import org.jetbrains.kotlin.gradle.plugin.internal.BuildIdService
import org.jetbrains.kotlin.gradle.plugin.internal.state.TaskLoggers import org.jetbrains.kotlin.gradle.plugin.internal.state.TaskLoggers
import org.jetbrains.kotlin.gradle.plugin.internal.state.getTaskLogger
import org.jetbrains.kotlin.gradle.tasks.* import org.jetbrains.kotlin.gradle.tasks.*
import org.jetbrains.kotlin.gradle.tasks.FailedCompilationException import org.jetbrains.kotlin.gradle.tasks.FailedCompilationException
import org.jetbrains.kotlin.gradle.tasks.TaskOutputsBackup import org.jetbrains.kotlin.gradle.tasks.TaskOutputsBackup
@@ -58,19 +59,7 @@ internal abstract class BuildToolsApiCompilationWork @Inject constructor(
private val taskPath private val taskPath
get() = workArguments.taskPath get() = workArguments.taskPath
private val log: KotlinLogger by lazy(LazyThreadSafetyMode.NONE) { private val log: KotlinLogger = getTaskLogger(taskPath, LOGGER_PREFIX, BuildToolsApiCompilationWork::class.java.simpleName)
TaskLoggers.get(taskPath)?.let { GradleKotlinLogger(it, LOGGER_PREFIX).apply { debug("Using '$taskPath' logger") } }
?: run {
val logger = LoggerFactory.getLogger("GradleKotlinCompilerWork")
val kotlinLogger = if (logger is org.gradle.api.logging.Logger) {
GradleKotlinLogger(logger, LOGGER_PREFIX)
} else SL4JKotlinLogger(logger, LOGGER_PREFIX)
kotlinLogger.apply {
debug("Could not get logger for '$taskPath'. Falling back to sl4j logger")
}
}
}
private fun performCompilation(): CompilationResult { private fun performCompilation(): CompilationResult {
val executionStrategy = workArguments.compilerExecutionSettings.strategy val executionStrategy = workArguments.compilerExecutionSettings.strategy
@@ -6,6 +6,9 @@
package org.jetbrains.kotlin.gradle.plugin.internal.state package org.jetbrains.kotlin.gradle.plugin.internal.state
import org.gradle.api.logging.Logger import org.gradle.api.logging.Logger
import org.jetbrains.kotlin.gradle.logging.GradleKotlinLogger
import org.jetbrains.kotlin.gradle.logging.SL4JKotlinLogger
import org.slf4j.LoggerFactory
import java.lang.ref.WeakReference import java.lang.ref.WeakReference
import java.util.HashMap import java.util.HashMap
@@ -26,4 +29,17 @@ internal object TaskLoggers {
fun clear() { fun clear() {
taskLoggers.clear() taskLoggers.clear()
} }
} }
internal fun getTaskLogger(taskPath: String, prefix: String?, fallbackLoggerName: String) =
TaskLoggers.get(taskPath)?.let { GradleKotlinLogger(it, prefix).apply { debug("Using '$taskPath' logger") } }
?: run {
val logger = LoggerFactory.getLogger(fallbackLoggerName)
val kotlinLogger = if (logger is Logger) {
GradleKotlinLogger(logger, prefix)
} else SL4JKotlinLogger(logger, prefix)
kotlinLogger.apply {
debug("Could not get logger for '$taskPath'. Falling back to sl4j logger")
}
}