2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

logbackの設定ファイルにlogback.groovyを使用する

Posted at

logback.xmlからlogback.groovyに移行する

XMLだとさすがに見づらい。調べてみると設定ファイルはgroovyで書けるらしい。マジかよいつからそうなんだよ知らなかったよ。という事で試してみた。

取り合えずファイル出力とコンソール出力をしてくれる単純な設定ファイル

logback.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でテストコード

hoge.kt
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に書いて、と。

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' // ← この人を追加した
}

お、今度はちゃんとログファイルでた。コンソールにも出た。

hoge.log
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
console.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>があると通らなかったくらいで。
消せばいいだけなんだけどね。

見やすくなって本当に助かったというお話。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?