import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.LoggerFactory;
public class LogbackLogLevelTest {
private Level originalLevel;
@Before
public void setUp() {
// ロガーを取得
Logger logger = (Logger) LoggerFactory.getLogger("com.example"); // ロガー名を指定
originalLevel = logger.getLevel(); // 元のレベルを保存
// ログレベルをDEBUGに変更
logger.setLevel(Level.DEBUG);
System.out.println("Log level set to DEBUG for test setup.");
}
@After
public void tearDown() {
// 元のレベルに戻す
Logger logger = (Logger) LoggerFactory.getLogger("com.example");
logger.setLevel(originalLevel);
System.out.println("Log level reverted to original.");
}
@Test
public void testExample() {
Logger logger = (Logger) LoggerFactory.getLogger("com.example");
logger.debug("This is a debug message.");
logger.info("This is an info message.");
}
}
解説
Logger の取得: LoggerFactory.getLogger() を使用して、対象のロガーを取得します。
元のログレベルを保存: @Before
メソッドで変更前のログレベルを保存しておきます。
ログレベルの変更: setLevel() を使用してログレベルを動的に変更します。
元に戻す: @After
メソッドでログレベルを元に戻します。
注意点
ロガー名(例: "com.example")は、対象のテストコードに応じて変更してください。
テストケース間でログレベルを変更すると他のテストに影響する可能性があるため、必ず @After
で元に戻す処理を追加してください。
他のログフレームワークや設定ファイルに依存している場合、この方法が正しく動作しない場合があります。その場合は Logback の設定ファイルを動的に読み込む方法も検討してください。