Создаём логгер Logback через конструктор без конфигов.
Следующий класс показывает создание логгера. В конструкторе создается объект LoggerContext, объект PatternLayoutEncoder, в котором задаётся кодировка и паттерн сообщения. Создаётся логгер и присваивается в поле log. Задаётся уровень логирования и отключается аддитивность. К логгеру добавляется консольный и файловый "аппендеры".
В конструктор класса нужно передать название логгера и путь к файлу лога.
package your.package import ch.qos.logback.classic.Level import ch.qos.logback.classic.Logger import ch.qos.logback.classic.LoggerContext import ch.qos.logback.classic.encoder.PatternLayoutEncoder import ch.qos.logback.classic.spi.ILoggingEvent import ch.qos.logback.core.ConsoleAppender import ch.qos.logback.core.FileAppender import org.slf4j.LoggerFactory import java.nio.charset.StandardCharsets class LogbackLogger(loggerName: String, logFilePath: String) { @JvmField var log: Logger init { val loggerContext = LoggerFactory.getILoggerFactory() as LoggerContext // set charset and pattern val layoutEncoder = PatternLayoutEncoder().apply { charset = StandardCharsets.UTF_8 pattern = "%d %-5p %m%n%n" context = loggerContext }.also { it.start() } // set logger level log = (LoggerFactory.getLogger(loggerName) as Logger).apply { level = Level.INFO isAdditive = false } // add console appender log.addAppender(ConsoleAppender().apply { name = "console_appender_$loggerName" context = loggerContext encoder = layoutEncoder }.also { it.start() }) // add file appender log.addAppender(FileAppender ().apply { name = "file_appender_$loggerName" context = loggerContext encoder = layoutEncoder file = logFilePath }.also { it.start() }) } }
Использование на языке Kotlin:
val logger = LogbackLogger("logger name", "C:\...\***.log").log logger.info("info message") logger.takeIf { it.isDebugEnabled }?.debug("debug message") // ... logger.detachAndStopAllAppenders()
Java:
var logger = new LogbackLogger("logger name", "C:\...\***.log").log; logger.info("info message"); if (logger.isDebugEnabled()) { logger.debug("debug message"); } // ... logger.detachAndStopAllAppenders();
Для создания логгера использована библиотека ch.qos.logback.logback-classic:1.2.7