logback.xmlからlogback.groovyに移行する
XMLだとさすがに見づらい。調べてみると設定ファイルはgroovyで書けるらしい。マジかよいつからそうなんだよ知らなかったよ。という事で試してみた。
取り合えずファイル出力とコンソール出力をしてくれる単純な設定ファイル
import ch.qos.logback.classic.encoder.PatternLayoutEncoder
import java.nio.charset.StandardCharsets
appender("FILE", RollingFileAppender) {
file = "./logs/hoge.log"
rollingPolicy(TimeBasedRollingPolicy) {
fileNamePattern = "./logs/hoge.%d{yyyyMMdd}.zip"
maxHistory = 7
}
encoder(PatternLayoutEncoder) {
charset = StandardCharsets.UTF_8
pattern = "%d %p %t - %m%n"
}
}
appender("STDOUT", ConsoleAppender) {
target = "System.out"
encoder(PatternLayoutEncoder) {
pattern = "%d{HH:mm:ss.SSS} %p %m%n"
}
}
root(TRACE, ["FILE", "STDOUT"])
アホほど見やすくなりました。すいませんでした。ありがとうございました。
とりあえずkotlinでテストコード
import org.slf4j.Logger
import org.slf4j.LoggerFactory
val <T : Any> T.log: Logger
get() = LoggerFactory.getLogger(javaClass.name)
object App {
@JvmStatic
fun main(args: Array<String>) {
log.error("error log")
log.warn("warn log")
log.info("info log")
log.debug("debug log")
log.trace("trace log")
}
}
クラスパスにつっこんで動かしてみる
ERROR in ch.qos.logback.classic.LoggerContext[default] - Groovy classes are not available on the class path. ABORTING INITIALIZATION.
早速怒られたぞ。何々?
Groovy classes are not available on the class path. ABORTING INITIALIZATION.
だと?
そりゃそうか。Groovyのランタイムがいるのか。
普通にimplementationで書けばいいよな。logback.ktsだったら話は早かったのに(小声)
今の最新は3.0.8なのね、了解。
implementation 'org.codehaus.groovy:groovy:3.0.8'
これをbuild.gradleに書いて、と。
dependencies {
implementation 'org.slf4j:slf4j-api:1.7.32'
implementation 'ch.qos.logback:logback-core:1.2.5'
implementation 'ch.qos.logback:logback-classic:1.2.5'
implementation 'org.codehaus.groovy:groovy:3.0.8' // ← この人を追加した
}
お、今度はちゃんとログファイルでた。コンソールにも出た。
2021-09-02 00:17:44,480 ERROR main - error log
2021-09-02 00:17:44,482 WARN main - warn log
2021-09-02 00:17:44,482 INFO main - info log
2021-09-02 00:17:44,482 DEBUG main - debug log
2021-09-02 00:17:44,482 TRACE main - trace log
00:17:44.480 ERROR error log
00:17:44.482 WARN warn log
00:17:44.482 INFO info log
00:17:44.482 DEBUG debug log
00:17:44.482 TRACE trace log
XML to groovy トランスレータありました
logback.xml to logback.groovy translator
http://logback.qos.ch/translator/asGroovy.html
これを通過させてあと微調整で大体いけそうな感じ。
注意点ってほどでもないけど、<!DOCTYPE configuration>
があると通らなかったくらいで。
消せばいいだけなんだけどね。
見やすくなって本当に助かったというお話。