| borgbutler-core/src/main/kotlin/de/micromata/borgbutler/EmphasizedLogSupport.kt | ●●●●● patch | view | raw | blame | history | |
| borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/BorgButlerApplication.kt | ●●●●● patch | view | raw | blame | history | |
| borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/WebConfig.kt | ●●●●● patch | view | raw | blame | history |
borgbutler-core/src/main/kotlin/de/micromata/borgbutler/EmphasizedLogSupport.kt
New file @@ -0,0 +1,134 @@ ///////////////////////////////////////////////////////////////////////////// // // Project ProjectForge Community Edition // www.projectforge.org // // Copyright (C) 2001-2021 Micromata GmbH, Germany (www.micromata.com) // // ProjectForge is dual-licensed. // // This community edition is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License as published // by the Free Software Foundation; version 3 of the License. // // This community edition is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General // Public License for more details. // // You should have received a copy of the GNU General Public License along // with this program; if not, see http://www.gnu.org/licenses/. // ///////////////////////////////////////////////////////////////////////////// package de.micromata.borgbutler import mu.KLogger import mu.KotlinLogging import org.apache.commons.lang3.StringUtils /** * Helper for logging very important information and warnings. */ class EmphasizedLogSupport @JvmOverloads constructor( private val log: KLogger, priority: Priority? = Priority.IMPORTANT, private val alignment: Alignment = Alignment.CENTER ) { private var number = 0 private val innerLength: Int var logLevel = LogLevel.INFO private var started = false constructor(log: KLogger, alignment: Alignment= Alignment.CENTER) : this(log, Priority.IMPORTANT, alignment) enum class Priority { NORMAL, IMPORTANT, VERY_IMPORTANT } enum class Alignment { CENTER, LEFT } enum class LogLevel { ERROR, WARN, INFO } private fun ensureStart() { if (!started) { started = true logStartSeparator() } } /** * @return this for chaining. */ private fun logStartSeparator(): EmphasizedLogSupport { for (i in 0 until number) { logSeparatorLine() } return log("") } /** * @return this for chaining. */ fun logEnd(): EmphasizedLogSupport { ensureStart() log("") for (i in 0 until number) { logSeparatorLine() } return this } private fun logSeparatorLine() { logLine(StringUtils.rightPad("", innerLength, '*') + asterisks(number * 2 + 2)) } fun log(text: String?): EmphasizedLogSupport { ensureStart() if (text?.contains("\n") == true) { for (line in StringUtils.splitPreserveAllTokens(text, '\n')) { logLineText(line) } } else { logLineText(text) } return this } private fun logLineText(line: String?) { val padText = if (alignment == Alignment.LEFT) StringUtils.rightPad(line, innerLength) else StringUtils.center(line, innerLength) logLine(asterisks(number) + " " + padText + " " + asterisks(number)) } private fun logLine(msg: String) { if (logLevel == LogLevel.ERROR) log.error(msg) else if (logLevel == LogLevel.WARN) log.warn(msg) else log.info( msg ) } companion object { private const val CONSOLE_LENGTH = 120 private fun asterisks(number: Int): String { return StringUtils.rightPad("*", number, '*') } } init { when (priority) { Priority.NORMAL -> number = 1 Priority.VERY_IMPORTANT -> { number = 5 logLevel = LogLevel.WARN } else -> number = 2 } innerLength = CONSOLE_LENGTH - 2 * number } } borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/BorgButlerApplication.kt
@@ -1,5 +1,6 @@ package de.micromata.borgbutler.server import de.micromata.borgbutler.EmphasizedLogSupport import de.micromata.borgbutler.cache.ButlerCache import de.micromata.borgbutler.config.ConfigurationHandler import de.micromata.borgbutler.config.ConfigurationHandler.Companion.init @@ -119,23 +120,26 @@ } val uri = URI.create(url) val quietMode = line.hasOption('q') val emphasizedLog = EmphasizedLogSupport(log) if (!quietMode && RunningMode.desktopSupportsBrowse) { try { log.info { "Trying to open your local web browser: $uri" } emphasizedLog.log("Trying to open your local web browser: $uri") Desktop.getDesktop().browse(uri) } catch (ex: Exception) { log.info("Can't open web browser: " + ex.message, ex) log.info("Desktop not available. Please open your browser manually: $uri") emphasizedLog.logLevel = EmphasizedLogSupport.LogLevel.ERROR emphasizedLog.log("Can't open web browser: " + ex.message) emphasizedLog.log("Desktop not available. Please open your browser manually: $uri") } } else { if (quietMode) { log.info("Server started in quiet mode (option -q). Please open your browser manually: $uri") emphasizedLog.log("Server started in quiet mode (option -q). Please open your browser manually: $uri") } else if (RunningMode.headlessMode) { log.info("Desktop not available in headless mode. Please open your browser manually: $uri") emphasizedLog.log("Desktop not available in headless mode. Please open your browser manually: $uri") } else if (!RunningMode.desktopSupportsBrowse) { log.info("Desktop not available. Please open your browser manually: $uri") emphasizedLog.log("Desktop not available. Please open your browser manually: $uri") } } emphasizedLog.logEnd() } catch (ex: ParseException) { // oops, something went wrong System.err.println("Parsing failed. Reason: " + ex.message) borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/WebConfig.kt
@@ -1,5 +1,6 @@ package de.micromata.borgbutler.server import de.micromata.borgbutler.EmphasizedLogSupport import mu.KotlinLogging import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration @@ -56,15 +57,14 @@ override fun addCorsMappings(registry: CorsRegistry) { if (RunningMode.webDevelopment) { log.warn("************************************") log.warn("*********** **********") log.warn("*********** ATTENTION! **********") log.warn("*********** **********") log.warn("*********** Running in **********") log.warn("*********** web dev mode! **********") log.warn("*********** **********") log.warn("************************************") log.warn("Don't deliver this app in dev mode due to security reasons (CrossOriginFilter is set)!") val emphasizedLog = EmphasizedLogSupport(log) emphasizedLog.logLevel = EmphasizedLogSupport.LogLevel.WARN emphasizedLog.log("ATTENTION!") emphasizedLog.log("") emphasizedLog.log("Running in web dev mode!") emphasizedLog.log("") emphasizedLog.log("Don't deliver this app in dev mode due to security reasons (CrossOriginFilter is set)!") emphasizedLog.logEnd() registry.addMapping("/**") } }