diff --git a/platform/platform-api/src/com/intellij/internal/statistic/eventLog/FeatureUsageEventLogger.kt b/platform/platform-api/src/com/intellij/internal/statistic/eventLog/FeatureUsageEventLogger.kt index 62fc79167eb6..ff9bc912713f 100644 --- a/platform/platform-api/src/com/intellij/internal/statistic/eventLog/FeatureUsageEventLogger.kt +++ b/platform/platform-api/src/com/intellij/internal/statistic/eventLog/FeatureUsageEventLogger.kt @@ -1,67 +1,54 @@ -// Copyright 2000-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 file. +// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.internal.statistic.eventLog import com.intellij.openapi.diagnostic.Logger import com.intellij.openapi.extensions.ExtensionPointName import com.intellij.openapi.extensions.Extensions import java.io.File -import java.util.* private val LOG = Logger.getInstance("#com.intellij.internal.statistic.eventLog.FeatureUsageEventLogger") private val EP_NAME = ExtensionPointName.create("com.intellij.statistic.eventLog.fusEventLoggerProvider") interface FeatureUsageEventLogger { - fun log(group: FeatureUsageGroup, action: String, isState: Boolean) - fun log(group: FeatureUsageGroup, action: String, data: Map, isState: Boolean) - fun getLogFiles(): List - } interface FeatureUsageEventLoggerProvider { fun isEnabled() : Boolean - fun createLogger() : FeatureUsageEventLogger } class FeatureUsageEmptyEventLoggerProvider : FeatureUsageEventLoggerProvider { - - override fun isEnabled() : Boolean { - return false - } - - override fun createLogger() : FeatureUsageEventLogger { - return FeatureUsageEmptyEventLogger() - } + override fun isEnabled() : Boolean = false + override fun createLogger() : FeatureUsageEventLogger = FeatureUsageEmptyEventLogger() } class FeatureUsageEmptyEventLogger : FeatureUsageEventLogger { - - override fun log(group: FeatureUsageGroup, action: String, isState: Boolean) { - } - - override fun log(group: FeatureUsageGroup, action: String, data: Map, isState: Boolean) { - } - - override fun getLogFiles(): List { - return emptyList() - } + override fun log(group: FeatureUsageGroup, action: String, isState: Boolean) = Unit + override fun log(group: FeatureUsageGroup, action: String, data: Map, isState: Boolean) = Unit + override fun getLogFiles(): List = emptyList() } fun getLoggerProvider(): FeatureUsageEventLoggerProvider { if (Extensions.getRootArea().hasExtensionPoint(EP_NAME.name)) { - val extensions = EP_NAME.extensions + val extensions = EP_NAME.extensionList if (extensions.isEmpty()) { LOG.warn("Cannot find feature usage event logger") + return FeatureUsageEmptyEventLoggerProvider() } else if (extensions.size > 1) { - LOG.warn("Too many feature usage loggers registered (" + Arrays.asList(*extensions) + ")") + LOG.warn("Too many feature usage loggers registered (${extensions})") } return extensions[0] } return FeatureUsageEmptyEventLoggerProvider() } +/** + * Best practices: + * - Prefer a bigger group with many (related) event types to many small groups of 1-2 events each. + * - Prefer shorter group names; avoid common prefixes (such as "statistics."). + */ class FeatureUsageGroup(val id: String, val version: Int) \ No newline at end of file