Minor: unify logging in scripting

This commit is contained in:
Natalia Selezneva
2020-07-23 00:19:58 +03:00
parent 8a6cdcba29
commit 8d894929ae
13 changed files with 50 additions and 54 deletions
@@ -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<File> = emptyList()
): List<ScriptDefinition> {
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
}
@@ -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)
@@ -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
@@ -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
}
@@ -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) {
@@ -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)
}
@@ -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()
@@ -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")}"
@@ -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
@@ -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
@@ -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
@@ -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.*
@@ -76,20 +76,4 @@ fun kotlinDslScriptsModelImportSupported(currentGradleVersion: String): Boolean
}
fun getGradleProjectSettings(project: Project): Collection<GradleProjectSettings> =
(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)
}
(ExternalSystemApiUtil.getSettings(project, GradleConstants.SYSTEM_ID) as GradleSettings).linkedProjectsSettings