Конфигурационный файл logback.groovy для логгирования Spring-приложений в консоль и в Logstash. Название приложения берется из файлов bootstrap.yml или application.yml. Переменные Enviroment для логгера: SPRING_PROFILE – профили запущенного инстанса LOGSTASH_SERVER – адрес Logstash сервера
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
import net.logstash.logback.appender.LogstashTcpSocketAppender import net.logstash.logback.encoder.LogstashEncoder import org.springframework.core.io.ClassPathResource import org.yaml.snakeyaml.Yaml String appName = null String profile = System.getenv("SPRING_PROFILE") ?: "default" def bootstrap = new ClassPathResource("bootstrap.yml") def application = new ClassPathResource("application.yml") def resource = bootstrap.exists() ? bootstrap : application.exists() ? application : null if (resource) { def yaml = new Yaml() appName = yaml.load(resource.inputStream).spring.application.name } def LOGSTASH_SERVER = System.getenv("LOGSTASH_SERVER") println "=" * 80 println """ APP NAME : $appName APP PROFILE : $profile LOGSTASH SERVER : $LOGSTASH_SERVER LOGGING FILE : logback.groovy""" println "=" * 80 def appenders = [] if (LOGSTASH_SERVER) { appender("TCP", LogstashTcpSocketAppender.class) { destination = LOGSTASH_SERVER encoder(LogstashEncoder) { customFields = """{"project_name" : "$appName", "profile" : "$profile"}""" } } appenders += "TCP" } appender("STDOUT", ConsoleAppender) { encoder(PatternLayoutEncoder) { pattern = '%d{dd-MM-yyyy HH:mm:ss.SSS} %magenta([%thread]) %highlight(%-5level) %logger{36}.%M - %msg%n' } } appenders += "STDOUT" root(INFO, appenders) |