diff --git a/query/src/main/kotlin/jetbrains/exodus/query/metadata/IndicesCreator.kt b/query/src/main/kotlin/jetbrains/exodus/query/metadata/IndicesCreator.kt index 86d85450b..c91b543e1 100644 --- a/query/src/main/kotlin/jetbrains/exodus/query/metadata/IndicesCreator.kt +++ b/query/src/main/kotlin/jetbrains/exodus/query/metadata/IndicesCreator.kt @@ -33,7 +33,7 @@ internal fun ODatabaseSession.applyIndices(indices: Map> ) { - private val logger = PaddedLogger(log) + private val logger = PaddedLogger.logger(log) fun createIndices(oSession: ODatabaseSession) { try { diff --git a/query/src/main/kotlin/jetbrains/exodus/query/metadata/OrientDbSchemaInitializer.kt b/query/src/main/kotlin/jetbrains/exodus/query/metadata/OrientDbSchemaInitializer.kt index 4a6004566..85b11d218 100644 --- a/query/src/main/kotlin/jetbrains/exodus/query/metadata/OrientDbSchemaInitializer.kt +++ b/query/src/main/kotlin/jetbrains/exodus/query/metadata/OrientDbSchemaInitializer.kt @@ -126,7 +126,7 @@ internal class OrientDbSchemaInitializer( private val indexForEverySimpleProperty: Boolean, private val applyLinkCardinality: Boolean ) { - private val paddedLogger = PaddedLogger(log) + private val paddedLogger = PaddedLogger.logger(log) private fun withPadding(code: () -> Unit) = paddedLogger.withPadding(4, code) @@ -152,6 +152,7 @@ internal class OrientDbSchemaInitializer( } fun apply(): SchemaApplicationResult { + val start = System.currentTimeMillis() try { oSession.createClassIdSequenceIfAbsent() @@ -221,6 +222,7 @@ internal class OrientDbSchemaInitializer( ) } finally { paddedLogger.flush() + log.info("Schema initialization took ${System.currentTimeMillis() - start}ms") } } diff --git a/query/src/main/kotlin/jetbrains/exodus/query/metadata/PaddedLogger.kt b/query/src/main/kotlin/jetbrains/exodus/query/metadata/PaddedLogger.kt index 2418d3193..d77f89c09 100644 --- a/query/src/main/kotlin/jetbrains/exodus/query/metadata/PaddedLogger.kt +++ b/query/src/main/kotlin/jetbrains/exodus/query/metadata/PaddedLogger.kt @@ -1,3 +1,4 @@ + /* * Copyright ${inceptionYear} - ${year} ${owner} * @@ -17,30 +18,42 @@ package jetbrains.exodus.query.metadata import mu.KLogger -class PaddedLogger( +interface PaddedLogger { + companion object { + //todo switch to configuration loading + private val VERBOSE_LOGGING get() = System.getProperty("jetbrains.xodus.oxigendb.verbose_schema_logging", "false").toBoolean() + fun logger(logger: KLogger): PaddedLogger = if (VERBOSE_LOGGING) PaddedLoggerImpl(logger) else DisabledPaddedLogger() + } + fun append(s: String) + fun appendLine(s: String) + fun updatePadding(paddingShift: Int) + fun flush() +} + +class PaddedLoggerImpl( private val logger: KLogger -) { +) : PaddedLogger { private var paddingCount: Int = 0 private val sb = StringBuilder() private var newLine: Boolean = false - fun append(s: String) { + override fun append(s: String) { addPaddingIfNewLine() sb.append(s) } - fun appendLine(s: String = "") { + override fun appendLine(s: String) { addPaddingIfNewLine() sb.appendLine(s) newLine = true } - fun updatePadding(paddingShift: Int) { + override fun updatePadding(paddingShift: Int) { paddingCount += paddingShift } - fun flush() { + override fun flush() { // trim last \n if (sb.isNotEmpty() && sb.last() == '\n') { sb.setLength(sb.length - 1) @@ -63,4 +76,14 @@ fun PaddedLogger.withPadding(padding: Int = 4, code: () -> Unit) { updatePadding(padding) code() updatePadding(-padding) -} \ No newline at end of file +} + +class DisabledPaddedLogger : PaddedLogger { + override fun append(s: String) = Unit + + override fun appendLine(s: String) = Unit + + override fun updatePadding(paddingShift: Int) = Unit + + override fun flush() = Unit +}