2015-02-26 6 views
7

Sto cercando di far funzionare log4j in un progetto su cui sto lavorando. Ho aggiunto le dipendenze log4j rilevanti in build.gradle ed escluso la registrazione dell'avvio di avvio Spring in modo che possa funzionare.Gradle | Le dipendenze boot primaverili non escludono

Questo ha funzionato bene quando ho usato Maven come strumento di compilazione, ma una volta passato a Gradle non funziona affatto (ad eccezione della registrazione da avvio di avvio di Spring). Qui ci sono le dipendenze nel mio build.gradle

dependencies { 
    compile('org.springframework.boot:spring-boot-starter-data-jpa') 
    compile('org.springframework.boot:spring-boot-starter-web'){ 
     exclude module: 'org.springframework.boot:spring-boot-starter-logging' 
    } 
    compile('org.springframework.boot:spring-boot-starter-log4j') 
    compile('org.springframework.boot:spring-boot-starter-data-rest') 
    compile('org.springframework.boot:spring-boot-starter-actuator') 
    compile('org.postgresql:postgresql:9.3-1101-jdbc41') 
    compile('org.scala-lang:scala-library:2.10.4') 
    testCompile('org.springframework.boot:spring-boot-starter-test') { 
     exclude module: 'commons-logging' 
    } 
    providedCompile('org.springframework.boot:spring-boot-starter-tomcat') 
} 

Ma, come si può vedere chiaramente nella struttura di dipendenza spring-boot-starter-logging è ancora lì. Immagino che questo sia il motivo per cui il logging non funziona.

Ecco l'albero delle dipendenze:

+--- org.springframework.boot:spring-boot-starter-data-jpa: -> 1.2.1.RELEASE 
| +--- org.springframework.boot:spring-boot-starter:1.2.1.RELEASE 
| | +--- org.springframework.boot:spring-boot:1.2.1.RELEASE 
| | | +--- org.springframework:spring-core:4.1.4.RELEASE 
| | | \--- org.springframework:spring-context:4.1.4.RELEASE 
| | |   +--- org.springframework:spring-aop:4.1.4.RELEASE 
| | |   | +--- aopalliance:aopalliance:1.0 
| | |   | +--- org.springframework:spring-beans:4.1.4.RELEASE 
| | |   | | \--- org.springframework:spring-core:4.1.4.RELEASE 
| | |   | \--- org.springframework:spring-core:4.1.4.RELEASE 
| | |   +--- org.springframework:spring-beans:4.1.4.RELEASE (*) 
| | |   +--- org.springframework:spring-core:4.1.4.RELEASE 
| | |   \--- org.springframework:spring-expression:4.1.4.RELEASE 
| | |    \--- org.springframework:spring-core:4.1.4.RELEASE 
| | +--- org.springframework.boot:spring-boot-autoconfigure:1.2.1.RELEASE 
| | | \--- org.springframework.boot:spring-boot:1.2.1.RELEASE (*) 
| | +--- org.springframework.boot:spring-boot-starter-logging:1.2.1.RELEASE 

Ecco il mio file log4j.properties

log4j.rootLogger=INFO, fileout, CONSOLE 
PID=???? 
LOG_PATTERN=[%d{yyyy-MM-dd HH:mm:ss.SSS}] log4j%X{context} - ${PID} %5p [%t] --- %c{1}: %m%n 


# CONSOLE is set to be a ConsoleAppender using a PatternLayout. 
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 
log4j.appender.CONSOLE.layout.ConversionPattern=${LOG_PATTERN} 

# Log4j configurations for with file appender 
log4j.category.org.hibernate.validator.internal.util.Version=WARN 
log4j.category.org.apache.coyote.http11.Http11NioProtocol=WARN 
log4j.category.org.apache.tomcat.util.net.NioSelectorPool=WARN 
log4j.category.org.apache.catalina.startup.DigesterFactory=ERROR 

log4j.appender.fileout=org.apache.log4j.RollingFileAppender 
log4j.appender.fileout.File=sampleLog.log 
log4j.appender.fileout.MaxFileSize=1024KB 
log4j.appender.fileout.MaxBackupIndex=1 
log4j.appender.fileout.layout=org.apache.log4j.PatternLayout 
log4j.appender.fileout.layout.conversionPattern=${LOG_PATTERN} 

UPDATE

Sono riuscito a risolvere l'esclusione di dipendenza file jar. Ma la registrazione non funziona ancora, log4j.properties si trova anche nella distribuzione WAR sotto le classi.

AGGIORNAMENTO 02

Ha funzionato problema è con il mio IDE (STS)

risposta

23

Tutte le spring-boot-starter-* progetti dipendono spring-boot-starter progetto, che a sua volta dipende in spring-boot-starter-logging. Sono stato in grado di rimuovere questa dipendenza aggiungendo la seguente riga nella sezione configurazioni:

configurations { 
    compile.exclude module: 'spring-boot-starter-logging' 
} 
+0

Ha funzionato, la dipendenza della registrazione di avvio di primavera è stata rimossa, ma la registrazione non funziona ancora. – Switch

+0

Il file 'sampleLog.log' generato senza contenuti o il file stesso non viene creato? – Mithun

1

Hai escluso il modulo primavera-boot-starter-logging a partire dalla primavera-boot-starter-web, ma come si può vedere chiaramente dall'albero delle dipendenze, il modulo spring-boot-starter-data-jpa ha anche una dipendenza da spring-boot-starter-logging, quindi devi anche escluderlo da lì (e da tutti gli altri spring-boot-starter- * dipendenze, poiché tutte dipendono da spring-boot-starter-logging).