2014-04-23 3 views
6

Wenn folgenden this Frühling Beispiel, das ich erwartet hatte Ausgabe wie folgt zu sehen:Ändern Sie Spring-Framework-Protokollebene in einem einfachen Beispielprojekt?

Creating tables 
Inserting customer record for John Woo 
Inserting customer record for Jeff Dean 
... 

Stattdessen habe ich einige DEBUG Log-Meldungen zwischen jeder Zeile durchsetzt:

Creating tables 
12:31:16.474 [main] DEBUG o.s.jdbc.core.JdbcTemplate - Executing SQL statement [drop table customers if exists] 
12:31:16.484 [main] DEBUG o.s.jdbc.datasource.DataSourceUtils - Fetching JDBC Connection from DataSource 
12:31:16.484 [main] DEBUG o.s.j.d.SimpleDriverDataSource - Creating new JDBC Driver Connection to [jdbc:h2:mem] 
... 

Thesevariousanswers scheinen zu zeigen, dass Dies kann durch Ändern der Log-Level in meiner log4j.properties Datei gelöst werden. Im folgenden wird jedoch the Spring example eine log4j.properties Datei nie erwähnt.

Interessanterweise Frühling scheint zu log4j intern werden:

$ grep -R "log4j" * 
Binary file build/libs/gs-relational-data-access-0.1.0.jar matches 

Ich stelle mir vor ich log4j verwenden könnte dieses Problem zu beheben, aber the manual scheint nicht die Angaben über, wo log4j.properties zu setzen oder, wie man Integriere es in dieses Projekt.

Wie ändere ich die Protokollierungsstufe, um diese DEBUG Anweisungen zu entfernen?

Wenn ich eine log4j.properties Datei verwenden muss, wo platziere ich sie? Muss ich es an meine build.gradle Datei binden, oder referenzieren Sie es in meinen .java Dateien irgendwie?

Antwort

20

Dies sind die Werke von Spring Boot, die unterhalb mit der Protokollierung Routing jul, jcl und log4j über slf4j und beschäftigt Logback über slf4j, wie Sie durch die unterscheidbaren verkürzte Namespace Klassennamen sagen können, zu tun hat.

All dies ist gut sichtbar über die IntelliJ-Diagramm-Tools direkt auf der pom-Datei:

enter image description here

Dieses Setup der besten Praxis folgende as described/depicted in the SLF4J site:

slf4j bridge setup - logback implementation

Das Protokoll ist gesprächig wegen der Spring DEBUG Ebene. Um das zu ändern:

1) Erstellen Sie ein resources Verzeichnis unter <projectDir>/src/main, wie Sie in einem Maven-Projekt haben würden. 2) Erstellen Sie eine logback.xml Datei darin enthalten:

<configuration> 

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
     <encoder> 
      <pattern>web - %date [%thread] %-5level %logger{36} - %message%n 
      </pattern> 
     </encoder> 
    </appender> 

    <logger name="org.springframework" level="WARN" /> 

    <root level="INFO"> 
     <appender-ref ref="STDOUT" /> 
    </root> 

</configuration> 

und voila!

Creating tables 
Inserting customer record for John Woo 
Inserting customer record for Jeff Dean 
Inserting customer record for Josh Bloch 
Inserting customer record for Josh Long 
Querying for customer records where first_name = 'Josh': 
Customer[id=3, firstName='Josh', lastName='Bloch'] 
Customer[id=4, firstName='Josh', lastName='Long'] 
Verwandte Themen