From 8d894929ae83973dbd32890d2120105dc62bac27 Mon Sep 17 00:00:00 2001 From: Natalia Selezneva Date: Thu, 23 Jul 2020 00:19:58 +0300 Subject: [PATCH] Minor: unify logging in scripting --- .../core/script/ScriptDefinitionsManager.kt | 14 +++++------ .../configuration/DefaultScriptingSupport.kt | 8 +++---- .../ScriptConfigurationFileAttributeCache.kt | 6 ++--- .../DefaultScriptConfigurationLoader.kt | 8 +++---- .../utils/DefaultBackgroundExecutor.kt | 6 +++-- .../kotlin/idea/core/script/scriptUtils.kt | 24 ++++++++++++++----- .../script/ucache/ScriptClassRootsUpdater.kt | 4 ++-- .../core/script/ucache/ScriptSdksBuilder.kt | 4 ++-- .../gradle/GradleScriptDefinitionsProvider.kt | 5 +--- .../scripting/gradle/LastModifiedFiles.kt | 1 + .../scripting/gradle/roots/GradleBuildRoot.kt | 3 +-- .../gradle/roots/GradleBuildRootsManager.kt | 3 +++ .../kotlin/idea/scripting/gradle/utils.kt | 18 +------------- 13 files changed, 50 insertions(+), 54 deletions(-) diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDefinitionsManager.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDefinitionsManager.kt index c52fe307eb8..8585504eabb 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDefinitionsManager.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDefinitionsManager.kt @@ -241,7 +241,7 @@ class ScriptDefinitionsManager(private val project: Project) : LazyScriptDefinit } catch (t: Throwable) { if (t is ControlFlowException) throw t // reporting failed loading only once - LOG.error("[kts] cannot load script definitions using $this", t) + scriptingErrorLog("[kts] cannot load script definitions using $this", t) failedContributorsHashes.add(this@safeGetDefinitions.hashCode()) } return emptyList() @@ -266,7 +266,7 @@ fun loadDefinitionsFromTemplates( additionalResolverClasspath: List = emptyList() ): List { val classpath = templateClasspath + additionalResolverClasspath - LOG.info("[kts] loading script definitions $templateClassNames using cp: ${classpath.joinToString(File.pathSeparator)}") + scriptingInfoLog("Loading script definitions $templateClassNames using cp: ${classpath.joinToString(File.pathSeparator)}") val baseLoader = ScriptDefinitionContributor::class.java.classLoader val loader = if (classpath.isEmpty()) baseLoader else URLClassLoader(classpath.map { it.toURI().toURL() }.toTypedArray(), baseLoader) @@ -286,24 +286,24 @@ fun loadDefinitionsFromTemplates( ScriptDefinition.FromTemplate(hostConfiguration, template, ScriptDefinition::class) } else -> { - LOG.warn("[kts] cannot find a valid script definition annotation on the class $template") + scriptingWarnLog("Cannot find a valid script definition annotation on the class $template") null } } } catch (e: ClassNotFoundException) { // Assuming that direct ClassNotFoundException is the result of versions mismatch and missing subsystems, e.g. gradle // so, it only results in warning, while other errors are severe misconfigurations, resulting it user-visible error - LOG.warn("[kts] cannot load script definition class $templateClassName") + scriptingWarnLog("Cannot load script definition class $templateClassName") null } catch (e: Throwable) { if (e is ControlFlowException) throw e - val message = "[kts] cannot load script definition class $templateClassName" + val message = "Cannot load script definition class $templateClassName" val thirdPartyPlugin = PluginManagerCore.getPluginByClassName(templateClassName) if (thirdPartyPlugin != null) { - LOG.error(PluginException(message, e, thirdPartyPlugin)) + scriptingErrorLog(message, PluginException(message, e, thirdPartyPlugin)) } else { - LOG.error(message, e) + scriptingErrorLog(message, e) } null } diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/DefaultScriptingSupport.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/DefaultScriptingSupport.kt index a3917338056..64c5d118d1a 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/DefaultScriptingSupport.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/DefaultScriptingSupport.kt @@ -263,7 +263,7 @@ class DefaultScriptingSupport(manager: CompositeScriptConfigurationManager) : De forceSkipNotification: Boolean ) { saveLock.withLock { - debug(file) { "configuration received = $newResult" } + scriptingDebugLog(file) { "configuration received = $newResult" } setLoadedConfiguration(file, newResult) @@ -290,7 +290,7 @@ class DefaultScriptingSupport(manager: CompositeScriptConfigurationManager) : De saveReports(file, newResult.reports) setAppliedConfiguration(file, newResult, syncUpdate = true) } else { - debug(file) { + scriptingDebugLog(file) { "configuration changed, notification is shown: old = $oldConfiguration, new = $newConfiguration" } @@ -321,7 +321,7 @@ class DefaultScriptingSupport(manager: CompositeScriptConfigurationManager) : De ) { val oldReports = IdeScriptReportSink.getReports(file) if (oldReports != newReports) { - debug(file) { "new script reports = $newReports" } + scriptingDebugLog(file) { "new script reports = $newReports" } ServiceManager.getService(project, ScriptReportSink::class.java).attachReports(file, newReports) @@ -502,7 +502,7 @@ abstract class DefaultScriptingSupportBase(val manager: CompositeScriptConfigura ) { manager.updater.checkInTransaction() val newConfiguration = newConfigurationSnapshot?.configuration - debug(file) { "configuration changed = $newConfiguration" } + scriptingDebugLog(file) { "configuration changed = $newConfiguration" } if (newConfiguration != null) { cache.setApplied(file, newConfigurationSnapshot) diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/cache/ScriptConfigurationFileAttributeCache.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/cache/ScriptConfigurationFileAttributeCache.kt index b225ee5f34c..c90d00d23d4 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/cache/ScriptConfigurationFileAttributeCache.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/cache/ScriptConfigurationFileAttributeCache.kt @@ -9,7 +9,7 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.vfs.VirtualFile import org.jetbrains.kotlin.idea.core.script.configuration.loader.ScriptConfigurationLoader import org.jetbrains.kotlin.idea.core.script.configuration.loader.ScriptConfigurationLoadingContext -import org.jetbrains.kotlin.idea.core.script.debug +import org.jetbrains.kotlin.idea.core.script.scriptingDebugLog import org.jetbrains.kotlin.idea.core.util.cachedFileAttribute import org.jetbrains.kotlin.idea.core.util.readObject import org.jetbrains.kotlin.idea.core.util.writeObject @@ -55,7 +55,7 @@ internal class ScriptConfigurationFileAttributeCache( virtualFile: VirtualFile ): ScriptConfigurationSnapshotForFS? { val configurationSnapshot = virtualFile.scriptConfigurationSnapshot ?: return null - debug(virtualFile) { "configuration from fileAttributes = $configurationSnapshot" } + scriptingDebugLog(virtualFile) { "configuration from fileAttributes = $configurationSnapshot" } val configuration = configurationSnapshot.configuration ?: return null @@ -73,7 +73,7 @@ internal class ScriptConfigurationFileAttributeCache( if (it.exists()) { true } else { - debug(file) { + scriptingDebugLog(file) { "classpath root saved to file attribute doesn't exist: ${it.path}" } false diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/loader/DefaultScriptConfigurationLoader.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/loader/DefaultScriptConfigurationLoader.kt index e1443c00a98..73eed5503ae 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/loader/DefaultScriptConfigurationLoader.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/loader/DefaultScriptConfigurationLoader.kt @@ -8,15 +8,13 @@ package org.jetbrains.kotlin.idea.core.script.configuration.loader import com.intellij.openapi.diagnostic.ControlFlowException import com.intellij.openapi.project.Project import com.intellij.openapi.vfs.VirtualFile -import org.jetbrains.kotlin.idea.core.script.ScriptConfigurationManager import org.jetbrains.kotlin.idea.core.script.configuration.cache.CachedConfigurationInputs import org.jetbrains.kotlin.idea.core.script.configuration.cache.ScriptConfigurationSnapshot -import org.jetbrains.kotlin.idea.core.script.debug +import org.jetbrains.kotlin.idea.core.script.scriptingDebugLog import org.jetbrains.kotlin.idea.core.script.settings.KotlinScriptingSettings import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition -import org.jetbrains.kotlin.scripting.definitions.runReadAction import org.jetbrains.kotlin.scripting.resolve.KtFileScriptSource import org.jetbrains.kotlin.scripting.resolve.LegacyResolverWrapper import org.jetbrains.kotlin.scripting.resolve.refineScriptCompilationConfiguration @@ -57,7 +55,7 @@ open class DefaultScriptConfigurationLoader(val project: Project) : ScriptConfig vFile: VirtualFile, scriptDefinition: ScriptDefinition ): ScriptConfigurationSnapshot { - debug(file) { "start dependencies loading" } + scriptingDebugLog(file) { "start dependencies loading" } val inputs = getInputsStamp(vFile, file) val scriptingApiResult = try { @@ -76,7 +74,7 @@ open class DefaultScriptConfigurationLoader(val project: Project) : ScriptConfig scriptingApiResult.valueOrNull() ) - debug(file) { "finish dependencies loading" } + scriptingDebugLog(file) { "finish dependencies loading" } return result } diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/utils/DefaultBackgroundExecutor.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/utils/DefaultBackgroundExecutor.kt index 332ba95ffcd..46be4046fdc 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/utils/DefaultBackgroundExecutor.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/utils/DefaultBackgroundExecutor.kt @@ -13,7 +13,9 @@ import com.intellij.openapi.vfs.VirtualFile import com.intellij.util.Alarm import com.intellij.util.containers.HashSetQueue import org.jetbrains.kotlin.idea.core.script.configuration.CompositeScriptConfigurationManager -import org.jetbrains.kotlin.idea.core.script.debug +import org.jetbrains.kotlin.idea.core.script.configuration.utils.DefaultBackgroundExecutor.Companion.PROGRESS_INDICATOR_DELAY +import org.jetbrains.kotlin.idea.core.script.configuration.utils.DefaultBackgroundExecutor.Companion.PROGRESS_INDICATOR_MIN_QUEUE +import org.jetbrains.kotlin.idea.core.script.scriptingDebugLog import org.jetbrains.kotlin.idea.core.util.KotlinIdeaCoreBundle import java.util.* import javax.swing.SwingUtilities @@ -72,7 +74,7 @@ internal class DefaultBackgroundExecutor( val task = LoadTask(key, actions) if (queue.add(task)) { - debug(task.key) { "added to update queue" } + scriptingDebugLog(task.key) { "added to update queue" } // If the queue is longer than PROGRESS_INDICATOR_MIN_QUEUE, show progress and cancel button if (queue.size > PROGRESS_INDICATOR_MIN_QUEUE) { diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/scriptUtils.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/scriptUtils.kt index 1a88219eb50..53a5fd67dd2 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/scriptUtils.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/scriptUtils.kt @@ -18,14 +18,26 @@ var Application.isScriptChangesNotifierDisabled by NotNullableUserDataProperty( true ) -internal val LOG = Logger.getInstance("#org.jetbrains.kotlin.idea.script") +private val logger = Logger.getInstance("#org.jetbrains.kotlin.idea.script") -internal fun debug(file: KtFile, message: () -> String) { - debug(file.originalFile.virtualFile, message) +fun scriptingDebugLog(file: KtFile, message: () -> String) { + scriptingDebugLog(file.originalFile.virtualFile, message) } -internal fun debug(file: VirtualFile? = null, message: () -> String) { - if (LOG.isDebugEnabled) { - LOG.debug("[KOTLIN SCRIPT] ${file?.let { file.path + " "} ?: ""}" + message()) +fun scriptingDebugLog(file: VirtualFile? = null, message: () -> String) { + if (logger.isDebugEnabled) { + logger.debug("[KOTLIN_SCRIPTING] ${file?.let { file.path + " "} ?: ""}" + message()) } +} + +fun scriptingInfoLog(message: String) { + logger.info("[KOTLIN_SCRIPTING] $message") +} + +fun scriptingWarnLog(message: String) { + logger.warn("[KOTLIN_SCRIPTING] $message") +} + +fun scriptingErrorLog(message: String, throwable: Throwable?) { + logger.error("[KOTLIN_SCRIPTING] $message", throwable) } \ No newline at end of file diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ucache/ScriptClassRootsUpdater.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ucache/ScriptClassRootsUpdater.kt index 298b02dcce6..1a6b0030faf 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ucache/ScriptClassRootsUpdater.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ucache/ScriptClassRootsUpdater.kt @@ -25,7 +25,7 @@ import kotlinx.coroutines.launch import org.jetbrains.kotlin.idea.core.script.KotlinScriptDependenciesClassFinder import org.jetbrains.kotlin.idea.core.script.ScriptDependenciesModificationTracker import org.jetbrains.kotlin.idea.core.script.configuration.CompositeScriptConfigurationManager -import org.jetbrains.kotlin.idea.core.script.debug +import org.jetbrains.kotlin.idea.core.script.scriptingDebugLog import org.jetbrains.kotlin.idea.core.util.EDT import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.idea.util.application.runWriteAction @@ -226,7 +226,7 @@ abstract class ScriptClassRootsUpdater( runWriteAction { if (project.isDisposed) return@runWriteAction - debug { "roots change event" } + scriptingDebugLog { "roots change event" } ProjectRootManagerEx.getInstanceEx(project)?.makeRootsChange(EmptyRunnable.getInstance(), false, true) ScriptDependenciesModificationTracker.getInstance(project).incModificationCount() diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ucache/ScriptSdksBuilder.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ucache/ScriptSdksBuilder.kt index 16bb38c1b7a..e92d82b60e1 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ucache/ScriptSdksBuilder.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ucache/ScriptSdksBuilder.kt @@ -11,8 +11,8 @@ import com.intellij.openapi.projectRoots.Sdk import com.intellij.openapi.roots.ProjectRootManager import com.intellij.openapi.vfs.VfsUtil import org.jetbrains.kotlin.idea.caches.project.getAllProjectSdks -import org.jetbrains.kotlin.idea.core.script.LOG import org.jetbrains.kotlin.idea.core.script.configuration.utils.ScriptClassRootsStorage +import org.jetbrains.kotlin.idea.core.script.scriptingWarnLog import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe import java.io.File @@ -77,7 +77,7 @@ class ScriptSdksBuilder( return anyJavaSdk } - LOG.warn( + scriptingWarnLog( "Default Script SDK is null: " + "projectSdk = ${ProjectRootManager.getInstance(project).projectSdk}, " + "all sdks = ${getAllProjectSdks().joinToString("\n")}" diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptDefinitionsProvider.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptDefinitionsProvider.kt index 8dc5732214a..8c02110b445 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptDefinitionsProvider.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptDefinitionsProvider.kt @@ -12,10 +12,7 @@ import com.intellij.util.EnvironmentUtil import com.intellij.util.PathUtil import org.gradle.util.GradleVersion import org.jetbrains.kotlin.idea.KotlinIdeaGradleBundle -import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionContributor -import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionSourceAsContributor -import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionsManager -import org.jetbrains.kotlin.idea.core.script.loadDefinitionsFromTemplates +import org.jetbrains.kotlin.idea.core.script.* import org.jetbrains.kotlin.idea.scripting.gradle.importing.KotlinDslSyncListener import org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRootsManager import org.jetbrains.kotlin.idea.scripting.gradle.roots.Imported diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/LastModifiedFiles.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/LastModifiedFiles.kt index 4d91bf45fba..12714c3ddff 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/LastModifiedFiles.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/LastModifiedFiles.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.idea.scripting.gradle import com.intellij.openapi.vfs.VirtualFile import com.intellij.openapi.vfs.newvfs.FileAttribute +import org.jetbrains.kotlin.idea.core.script.scriptingErrorLog import org.jetbrains.kotlin.idea.core.util.readNullable import org.jetbrains.kotlin.idea.core.util.readStringList import org.jetbrains.kotlin.idea.core.util.writeNullable diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/roots/GradleBuildRoot.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/roots/GradleBuildRoot.kt index f8c13d2f532..1269874d62e 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/roots/GradleBuildRoot.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/roots/GradleBuildRoot.kt @@ -8,12 +8,11 @@ package org.jetbrains.kotlin.idea.scripting.gradle.roots import com.intellij.openapi.vfs.LocalFileSystem import com.intellij.openapi.vfs.VirtualFile import org.jetbrains.annotations.TestOnly +import org.jetbrains.kotlin.idea.core.script.scriptingDebugLog import org.jetbrains.kotlin.idea.core.script.ucache.ScriptClassRootsBuilder import org.jetbrains.kotlin.idea.scripting.gradle.GradleScriptDefinitionsContributor import org.jetbrains.kotlin.idea.scripting.gradle.LastModifiedFiles import org.jetbrains.kotlin.idea.scripting.gradle.importing.KotlinDslScriptModel -import org.jetbrains.kotlin.idea.scripting.gradle.scriptingDebugLog -import org.jetbrains.kotlin.idea.scripting.gradle.scriptingErrorLog import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition import org.jetbrains.kotlin.scripting.resolve.VirtualFileScriptSource import org.jetbrains.plugins.gradle.settings.GradleProjectSettings diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/roots/GradleBuildRootsManager.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/roots/GradleBuildRootsManager.kt index b9515c55638..8d396e04847 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/roots/GradleBuildRootsManager.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/roots/GradleBuildRootsManager.kt @@ -21,6 +21,9 @@ import org.jetbrains.kotlin.idea.core.script.ScriptConfigurationManager import org.jetbrains.kotlin.idea.core.script.configuration.CompositeScriptConfigurationManager import org.jetbrains.kotlin.idea.core.script.configuration.DefaultScriptingSupport import org.jetbrains.kotlin.idea.core.script.configuration.ScriptingSupport +import org.jetbrains.kotlin.idea.core.script.scriptingDebugLog +import org.jetbrains.kotlin.idea.core.script.scriptingErrorLog +import org.jetbrains.kotlin.idea.core.script.scriptingInfoLog import org.jetbrains.kotlin.idea.core.script.ucache.ScriptClassRootsBuilder import org.jetbrains.kotlin.idea.core.util.EDT import org.jetbrains.kotlin.idea.scripting.gradle.* diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/utils.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/utils.kt index fc54325cf85..c988d03a657 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/utils.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/utils.kt @@ -76,20 +76,4 @@ fun kotlinDslScriptsModelImportSupported(currentGradleVersion: String): Boolean } fun getGradleProjectSettings(project: Project): Collection = - (ExternalSystemApiUtil.getSettings(project, GradleConstants.SYSTEM_ID) as GradleSettings).linkedProjectsSettings - -private val logger = Logger.getInstance("#org.jetbrains.kotlin.idea.scripting.gradle") - -fun scriptingDebugLog(message: () -> String) { - if (logger.isDebugEnabled) { - logger.debug("[KOTLIN_GRADLE_DSL] ${message()}") - } -} - -fun scriptingInfoLog(message: String) { - logger.info("[KOTLIN_GRADLE_DSL] $message") -} - -fun scriptingErrorLog(message: String, throwable: Throwable?) { - logger.error("[KOTLIN_GRADLE_DSL] $message", throwable) -} \ No newline at end of file + (ExternalSystemApiUtil.getSettings(project, GradleConstants.SYSTEM_ID) as GradleSettings).linkedProjectsSettings \ No newline at end of file