import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.slf4j.LoggerFactory;
public class LogbackLogLevelTestClass {
private static Level originalLevel;
@BeforeClass
public static void setUpClass() {
// ロガーを取得
Logger logger = (Logger) LoggerFactory.getLogger("com.example"); // ロガー名を指定
originalLevel = logger.getLevel(); // 元のレベルを保存
// ログレベルをDEBUGに変更
logger.setLevel(Level.DEBUG);
System.out.println("Log level set to DEBUG for the entire test class.");
}
@AfterClass
public static void tearDownClass() {
// 元のレベルに戻す
Logger logger = (Logger) LoggerFactory.getLogger("com.example");
logger.setLevel(originalLevel);
System.out.println("Log level reverted to original after the test class.");
}
@Test
public void testExample1() {
Logger logger = (Logger) LoggerFactory.getLogger("com.example");
logger.debug("This is a debug message in testExample1.");
logger.info("This is an info message in testExample1.");
}
@Test
public void testExample2() {
Logger logger = (Logger) LoggerFactory.getLogger("com.example");
logger.debug("This is a debug message in testExample2.");
logger.info("This is an info message in testExample2.");
}
}
解説
@BeforeClass
を使用:
テストクラス全体で共通のセットアップを行います。
ここで対象のロガーのログレベルを変更します。
@AfterClass
を使用:
テストクラス全体の終了後に元のログレベルに戻します。
テスト間の影響を防ぐために必ずログレベルを元に戻します。
テストメソッド間のログレベル統一:
クラス全体のログレベルが統一されるため、各テストメソッドでログレベルを気にする必要がありません。