Il est [nul] en charge du 4ème jour (https://qiita.com/YujiSoftware/items/2dc002977e730a3293fd#%E3%81%BE%E3%81%A8%E3%82%81).
Par défaut, de nombreux journaux sont générés au niveau INFO, alors contrôlez cela.
Java
openjdk 11.0.1 2018-10-16
Doma2
2.19.3
doma-spring-boot
1.1.1
Spring Boot
2.1.1
build.gradle
buildscript {
	ext {
		springBootVersion = '2.1.1.RELEASE'
	}
	repositories {
		mavenCentral()
	}
	dependencies {
		classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
	}
}
apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
sourceCompatibility = 11
targetCompatibility = 11
compileJava.options.encoding = "UTF-8"
repositories {
	mavenCentral()
}
dependencies {
	implementation('org.springframework.boot:spring-boot-starter-jdbc')
	implementation('org.seasar.doma.boot:doma-spring-boot-starter:1.1.1') {
		exclude group: 'org.seasar.doma', module: 'doma'
	}
	implementation('org.seasar.doma:doma:2.19.3')
	runtimeOnly('com.h2database:h2')
}
processResources.destinationDir = compileJava.destinationDir
compileJava.dependsOn processResources
TestTable.java
package sample.springboot.doma2;
import org.seasar.doma.Entity;
import org.seasar.doma.GeneratedValue;
import org.seasar.doma.GenerationType;
import org.seasar.doma.Id;
import org.seasar.doma.Table;
@Table(name = "TEST_TABLE")
@Entity
public class TestTable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Long id;
    public String name;
    @Override
    public String toString() {
        return "TestTable{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}
TestTableDao.java
package sample.springboot.doma2;
import org.seasar.doma.Dao;
import org.seasar.doma.Insert;
import org.seasar.doma.Select;
import org.seasar.doma.boot.ConfigAutowireable;
import java.util.List;
@Dao
@ConfigAutowireable
public interface TestTableDao {
    
    @Select
    List<TestTable> findAll();
    
    @Insert
    int insert(TestTable testTable);
}
Doma2Application.java
package sample.springboot.doma2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
public class Doma2Application {
	public static void main(String[] args) {
		try (ConfigurableApplicationContext context = SpringApplication.run(Doma2Application.class, args)) {
			TestTableDao dao = context.getBean(TestTableDao.class);
			System.out.println(dao.findAll());
			TestTable foo = new TestTable();
			foo.name = "foo";
			dao.insert(foo);
			TestTable bar = new TestTable();
			bar.name = "bar";
			dao.insert(bar);
			System.out.println(dao.findAll());
		}
	}
}
2018-12-03 22:32:25.979  INFO 24784 --- [           main] o.s.doma.jdbc.UtilLoggingJdbcLogger      : [DOMA2220] ENTER  :classe=[sample.springboot.doma2.TestTableDaoImpl],Méthode=[findAll]
2018-12-03 22:32:26.038  INFO 24784 --- [           main] o.s.doma.jdbc.UtilLoggingJdbcLogger      : [DOMA2076]Journal SQL:Fichier SQL=[META-INF/sample/springboot/doma2/TestTableDao/findAll.sql],
SELECT *
  FROM TEST_TABLE
2018-12-03 22:32:26.049  INFO 24784 --- [           main] o.s.doma.jdbc.UtilLoggingJdbcLogger      : [DOMA2221] EXIT   :classe=[sample.springboot.doma2.TestTableDaoImpl],Méthode=[findAll]
[]
2018-12-03 22:32:26.049  INFO 24784 --- [           main] o.s.doma.jdbc.UtilLoggingJdbcLogger      : [DOMA2220] ENTER  :classe=[sample.springboot.doma2.TestTableDaoImpl],Méthode=[insert]
2018-12-03 22:32:26.068  INFO 24784 --- [           main] o.s.doma.jdbc.UtilLoggingJdbcLogger      : [DOMA2076]Journal SQL:Fichier SQL=[null],
insert into TEST_TABLE (id, name) values (null, 'foo')
2018-12-03 22:32:26.071  INFO 24784 --- [           main] o.s.doma.jdbc.UtilLoggingJdbcLogger      : [DOMA2221] EXIT   :classe=[sample.springboot.doma2.TestTableDaoImpl],Méthode=[insert]
2018-12-03 22:32:26.072  INFO 24784 --- [           main] o.s.doma.jdbc.UtilLoggingJdbcLogger      : [DOMA2220] ENTER  :classe=[sample.springboot.doma2.TestTableDaoImpl],Méthode=[insert]
2018-12-03 22:32:26.072  INFO 24784 --- [           main] o.s.doma.jdbc.UtilLoggingJdbcLogger      : [DOMA2076]Journal SQL:Fichier SQL=[null],
insert into TEST_TABLE (id, name) values (null, 'bar')
2018-12-03 22:32:26.072  INFO 24784 --- [           main] o.s.doma.jdbc.UtilLoggingJdbcLogger      : [DOMA2221] EXIT   :classe=[sample.springboot.doma2.TestTableDaoImpl],Méthode=[insert]
2018-12-03 22:32:26.072  INFO 24784 --- [           main] o.s.doma.jdbc.UtilLoggingJdbcLogger      : [DOMA2220] ENTER  :classe=[sample.springboot.doma2.TestTableDaoImpl],Méthode=[findAll]
2018-12-03 22:32:26.073  INFO 24784 --- [           main] o.s.doma.jdbc.UtilLoggingJdbcLogger      : [DOMA2076]Journal SQL:Fichier SQL=[META-INF/sample/springboot/doma2/TestTableDao/findAll.sql],
SELECT *
  FROM TEST_TABLE
2018-12-03 22:32:26.075  INFO 24784 --- [           main] o.s.doma.jdbc.UtilLoggingJdbcLogger      : [DOMA2221] EXIT   :classe=[sample.springboot.doma2.TestTableDaoImpl],Méthode=[findAll]
[TestTable{id=1, name='foo'}, TestTable{id=2, name='bar'}]
Par défaut, il existe de nombreux journaux sur Doma2 au niveau INFO. Puisqu'il n'est pas possible de le déplacer en production tel quel, sortez-le au niveau DEBUG et contrôlez diverses choses.

JdbcLoggerqui utilisejava.util.logging.Logger` par défaut est fourni.java.util.logging.Logger.
--Pour cela, veuillez vous référer à Comment fonctionne jul-to-slf4j-- QiitaAbstractJdbcLogger.java
package org.seasar.doma.jdbc;
...
public abstract class AbstractJdbcLogger<LEVEL> implements JdbcLogger {
    /**Niveau de journal par défaut*/
    protected LEVEL defaultLevel;
    protected AbstractJdbcLogger(LEVEL level) {
        if (level == null) {
            throw new DomaNullPointerException("level");
        }
        this.defaultLevel = level;
    }
    @Override
    public void logDaoMethodEntering(String callerClassName,
            String callerMethodName, Object... args) {
        logDaoMethodEntering(callerClassName, callerMethodName, args,
                defaultLevel, () -> Message.DOMA2220.getMessage( //★ Passer le niveau de journalisation du champ d'instance
                        callerClassName, callerMethodName));
    }
    protected void logDaoMethodEntering(String callerClassName,
            String callerMethodName, Object args[], LEVEL level,
            Supplier<String> messageSupplier) {
        log(level, callerClassName, callerMethodName, null, messageSupplier);
    }
...
--Par exemple, logDaoMethodEntering () imprime le journal lorsque la méthode de Dao est lancée.
logDaoMethodEntering () qui est protected et transmet le niveau de journal par défaut ( defaultLevel) du champ d'instance au niveau de journal (LEVEL) de l'argument.
--ʻAbstractJdbcLogger` définit de nombreuses autres méthodes de journalisation lorsque Dao est exécuté, mais elles ont toutes la même structure.defaultLevel de ʻAbstractJdbcLogger. --Et l'emplacement où le niveau de journal par défaut en question est défini est dans ʻUtilLoggingJdbcLoggerUtilLoggingJdbcLogger.java
package org.seasar.doma.jdbc;
...
public class UtilLoggingJdbcLogger extends AbstractJdbcLogger<Level> {
    /**L'enregistreur utilisé dans ce cas.*/
    protected final Logger logger;
    ...
    public UtilLoggingJdbcLogger() {
        this(Level.INFO); //★ niveau INFO lorsqu'il est généré par le constructeur par défaut
    }
    ...
    public UtilLoggingJdbcLogger(Level level) {
        this(level, Logger.getLogger(UtilLoggingJdbcLogger.class.getName()));
    }
    ...
--Si ʻUtilLoggingJdbcLoggerest généré avec le constructeur par défaut, le niveau de journalisation sera INFO.  --Si vous ne spécifiez pas explicitement une instance deJdbcLogger dans les paramètres Doma2, ʻUtilLoggingJdbcLogger est généré par le constructeur par défaut, ce qui fait que tous les niveaux de sortie du journal sont INFO.
Si vous utilisez doma-spring-boot, vous pouvez configurer Doma2 en utilisant DomaConfigBuilder.
Doma2Application.java
package sample.springboot.doma2;
import org.seasar.doma.boot.autoconfigure.DomaConfigBuilder;
import org.seasar.doma.jdbc.JdbcLogger;
import org.seasar.doma.jdbc.UtilLoggingJdbcLogger;
...
import org.springframework.context.annotation.Bean;
import java.util.logging.Level;
@SpringBootApplication
public class Doma2Application {
	public static void main(String[] args) {
		try (ConfigurableApplicationContext context = SpringApplication.run(Doma2Application.class, args)) {
			...
		}
	}
	
	@Bean
	public JdbcLogger jdbcLogger() {
		return new UtilLoggingJdbcLogger(Level.FINE); //★ Généré avec le niveau de journal défini sur FINE
	}
	@Bean
	public DomaConfigBuilder domaConfigBuilder() {
		DomaConfigBuilder builder = new DomaConfigBuilder();
		builder.jdbcLogger(jdbcLogger()); //★ Réglez jdbcLogger
		return builder;
	}
}
Résultat d'exécution
[]
[TestTable{id=1, name='foo'}, TestTable{id=2, name='bar'}]
--Formé en définissant le niveau de journalisation sur FINE dans l'argument du constructeur de ʻUtilLoggingJdbcLogger et en le définissant sur jdbcLogger () ʻof DomaConfigBuilder.
FINE (niveau DEBUG dans SLF4J etc.), donc le journal n'est plus sorti.java.util.logging.Logger et le niveau de journalisation de SLF4J est [Javadoc] de SLF4JBridgeHandler (https://www.slf4j.org/api/org/slf4j/bridge/SLF4JBridgeHandler. Voir html)Si vous souhaitez afficher uniquement un journal spécifique à un niveau différent du niveau de journal par défaut, tel que "Je veux sortir uniquement la sortie SQL au niveau INFO", je fais probablement ce qui suit.
MyJdbcLogger.java
package sample.springboot.doma2;
import org.seasar.doma.jdbc.Sql;
import org.seasar.doma.jdbc.UtilLoggingJdbcLogger;
import java.util.function.Supplier;
import java.util.logging.Level;
//★ Créez votre propre enregistreur en héritant de UtilLoggingJdbcLogger
public class MyJdbcLogger extends UtilLoggingJdbcLogger {
    
    public MyJdbcLogger() {
        super(Level.FINE); //★ Le niveau de journalisation par défaut est FINE
    }
    //★ Remplacez la méthode de journalisation qui génère SQL
    @Override
    protected void logSql(String callerClassName, String callerMethodName, Sql<?> sql, Level level, Supplier<String> messageSupplier) {
        //★ Niveau d'argumentation(Niveau de journal par défaut)Ignorer et remplacer de force par INFO
        super.logSql(callerClassName, callerMethodName, sql, Level.INFO, messageSupplier);
    }
}
Doma2Application.java
package sample.springboot.doma2;
...
@SpringBootApplication
public class Doma2Application {
	public static void main(String[] args) {
		try (ConfigurableApplicationContext context = SpringApplication.run(Doma2Application.class, args)) {
			...
		}
	}
	
	@Bean
	public JdbcLogger jdbcLogger() {
		return new MyJdbcLogger(); //★ Utilisez votre propre enregistreur
	}
	@Bean
	public DomaConfigBuilder domaConfigBuilder() {
		DomaConfigBuilder builder = new DomaConfigBuilder();
		builder.jdbcLogger(jdbcLogger());
		return builder;
	}
}
Résultat d'exécution
2018-12-03 23:09:34.627  INFO 18180 --- [           main] o.s.doma.jdbc.UtilLoggingJdbcLogger      : [DOMA2076]Journal SQL:Fichier SQL=[META-INF/sample/springboot/doma2/TestTableDao/findAll.sql],
SELECT *
  FROM TEST_TABLE
[]
2018-12-03 23:09:34.656  INFO 18180 --- [           main] o.s.doma.jdbc.UtilLoggingJdbcLogger      : [DOMA2076]Journal SQL:Fichier SQL=[null],
insert into TEST_TABLE (id, name) values (null, 'foo')
2018-12-03 23:09:34.660  INFO 18180 --- [           main] o.s.doma.jdbc.UtilLoggingJdbcLogger      : [DOMA2076]Journal SQL:Fichier SQL=[null],
insert into TEST_TABLE (id, name) values (null, 'bar')
2018-12-03 23:09:34.661  INFO 18180 --- [           main] o.s.doma.jdbc.UtilLoggingJdbcLogger      : [DOMA2076]Journal SQL:Fichier SQL=[META-INF/sample/springboot/doma2/TestTableDao/findAll.sql],
SELECT *
  FROM TEST_TABLE
[TestTable{id=1, name='foo'}, TestTable{id=2, name='bar'}]
protected) que vous souhaitez modifier le niveau de journal et le remplacez par le niveau dont vous souhaitez modifier le niveau de journal. C'est tout pour le calendrier de l'avent Java de demain, nul. 
 </ del>
 Quelqu'un! écrire! !! !! !! </ del>
La charge de demain sera @orekyuu.
Recommended Posts