36874


spring-boot を使って開発しています。特定のループで無限ループが発生しているようなので、何が起きているのかを把握するために、 logger で
trace のログを仕込むことにしました。

[code]

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    public class Processor {
        private static final Logger logger = LoggerFactory.getLogger(Processor.class);
        private process() {
            Object current = getCurrent();
            while (current != null) {
                logger.trace("The object is: {}", current);
                doProcess(current);
                current = getNext();
            }
        }
        // 略
    }
    
[/code]

ただ、問題は trace なので、そのまま実行すると、その他もろもろの trace で埋め尽くされてしまう気がしています。 一時的に、 info
などにすればいいかもしれませんが、あちこち替えていって最後に戻し忘れたりするのはちょっと嫌だと考えました。

質問:

  * spring-boot (でデフォルトで使用されている Logback) で、一時的に特定のクラスだけ trace 出力したいです。どうやったら手っ取り早くこれを実現できるでしょうか。


CC BY-SA 3.0
2017-08-01T10:32:51.363
36851
2017-08-02T06:56:03.863
754
question
java spring-boot
デバッグ目的で、特定のクラス(もしくはメソッド)だけログを trace 出力したい


Logbackであれば、設定ファイル「logback.xml」の`<logger>`タグにパッケージあるいはクラス名を指定してログレベルを個別指定できたと思います。

[code]

        <!-- 記述例(appender-ref "STDOUT"の詳細は割愛) -->
        <logger name="com.example.Processor" level="TRACE" />
    
        <root level="INFO">
            <appender-ref ref="STDOUT" />
        </root>
    
[/code]

＃設定ファイル名は任意に指定できたと思うので、適宜読み替えて下さい。


CC BY-SA 3.0
2017-08-01T12:46:35.373
36856
2017-08-01T12:46:35.373
20098
36851
answer


`src/main/resources/logback.xml` に下記を追加することで、 spring-boot
のデフォルトのロギング設定を拡張する形で、 `com.example.Processor` のログを TRACE 指定にできました。

[code]

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    
        <include resource="org/springframework/boot/logging/logback/base.xml"/>
    
        <logger name="com.example.Processor" level="trace" />
    </configuration>
    
[/code]


CC BY-SA 3.0
2017-08-02T06:56:03.863
36874
2017-08-02T06:56:03.863
754
36851
answer