001package io.ebean.test; 002 003import io.ebeaninternal.api.SpiLogger; 004import io.ebeaninternal.api.SpiLoggerFactory; 005import org.slf4j.Logger; 006import org.slf4j.LoggerFactory; 007 008/** 009 * Create a logger that captures the SQL and register it for later access in tests. 010 * <p> 011 * The logged SQL is accessed by LoggedSql. 012 * </p> 013 */ 014public class CapturingLoggerFactory implements SpiLoggerFactory { 015 016 @Override 017 public SpiLogger create(String name) { 018 SpiLogger logger = new LogAdapter(LoggerFactory.getLogger(name)); 019 if (name.equals("io.ebean.SQL")) { 020 return LoggedSql.register(logger); 021 } 022 return logger; 023 } 024 025 private static final class LogAdapter implements SpiLogger { 026 027 private final Logger logger; 028 029 LogAdapter(Logger logger) { 030 this.logger = logger; 031 } 032 033 @Override 034 public boolean isDebug() { 035 return logger.isDebugEnabled(); 036 } 037 038 @Override 039 public boolean isTrace() { 040 return logger.isTraceEnabled(); 041 } 042 043 @Override 044 public void debug(String msg) { 045 logger.debug(msg); 046 } 047 048 @Override 049 public void trace(String msg) { 050 logger.trace(msg); 051 } 052 } 053}