Skip to main content
Glama
LogConfig.kt2.88 kB
package maestro.debuglog import org.apache.logging.log4j.LogManager import org.apache.logging.log4j.core.LoggerContext import org.apache.logging.log4j.core.appender.ConsoleAppender import org.apache.logging.log4j.core.appender.FileAppender import org.apache.logging.log4j.core.config.Configurator import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilder import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilderFactory import org.apache.logging.log4j.core.config.builder.impl.BuiltConfiguration object LogConfig { private const val DEFAULT_FILE_LOG_PATTERN = "%d{HH:mm:ss.SSS} [%5level] %logger.%method: %msg%n" private const val DEFAULT_CONSOLE_LOG_PATTERN = "%highlight([%5level]) %msg%n" private val FILE_LOG_PATTERN: String = System.getenv("MAESTRO_CLI_LOG_PATTERN_FILE") ?: DEFAULT_FILE_LOG_PATTERN private val CONSOLE_LOG_PATTERN: String = System.getenv("MAESTRO_CLI_LOG_PATTERN_CONSOLE") ?: DEFAULT_CONSOLE_LOG_PATTERN fun configure(logFileName: String? = null, printToConsole: Boolean) { val builder = ConfigurationBuilderFactory.newConfigurationBuilder() builder.setStatusLevel(org.apache.logging.log4j.Level.ERROR) builder.setConfigurationName("MaestroConfig") val rootLogger = builder.newRootLogger(org.apache.logging.log4j.Level.ALL) if (logFileName != null) { val fileAppender = createFileAppender(builder, logFileName) rootLogger.add(builder.newAppenderRef(fileAppender.getName())) } if (printToConsole) { val consoleAppender = createConsoleAppender(builder) rootLogger.add(builder.newAppenderRef(consoleAppender.getName())) } builder.add(rootLogger) val config = builder.build() Configurator.reconfigure(config) } private fun createConsoleAppender(builder: ConfigurationBuilder<BuiltConfiguration>): org.apache.logging.log4j.core.config.builder.api.AppenderComponentBuilder { val consoleAppender = builder.newAppender("Console", "CONSOLE") val consoleLayout = builder.newLayout("PatternLayout") consoleLayout.addAttribute("pattern", CONSOLE_LOG_PATTERN) consoleAppender.add(consoleLayout) builder.add(consoleAppender) return consoleAppender } private fun createFileAppender(builder: ConfigurationBuilder<BuiltConfiguration>, logFileName: String): org.apache.logging.log4j.core.config.builder.api.AppenderComponentBuilder { val fileAppender = builder.newAppender("File", FileAppender.PLUGIN_NAME) fileAppender.addAttribute("fileName", logFileName) val fileLayout = builder.newLayout("PatternLayout") fileLayout.addAttribute("pattern", FILE_LOG_PATTERN) fileAppender.add(fileLayout) builder.add(fileAppender) return fileAppender } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mobile-dev-inc/Maestro'

If you have feedback or need assistance with the MCP directory API, please join our Discord server