2013-09-06 15 views
14

Come posso disabilitare i log Spring per avere output di log che posso facilmente leggere o qualcun altro può leggere. Una risposta a una domanda simile a, how to disable spring bean loading log ha suggerito di commentare tutte le righe con org.springframeworksubstring in log4j.propertiesfile. Nel mio caso non ci sono linee del genere.Disabilitazione del registro Spring, per avere registri leggibili

Ecco log4j.properties

# Define the root logger with appender file 
log4j.rootLogger = DEBUG, stdout 

# Define the file appender 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
# Set the name of the logs destination 
log4j.appender.stdout.target=System.out 

# Set the immediate flush to true (default) 
log4j.appender.stdout.ImmediateFlush=true 

# Set the threshold to debug mode 
log4j.appender.stdout.Threshold=debug 

# Set the append to false, overwrite 
log4j.appender.stdout.Append=false 

# Define the layout for appender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.conversionPattern=%d{yyyy-MM-dd}:%m%n 

risposta

29

La registrazione predefinita, per tutto ciò che non è specificato esplicitamente, è DEBUG. Quindi tutto è registrato a quel livello (a giudicare dalla tua configurazione), fondamentalmente stai invadendo i tuoi log. Non dovresti rimuovere i logger per org.springframework, dovresti aggiungerli e impostare un altro livello per loro.

log4j.logger.org.springframework=INFO 

o qualsiasi livello di livello di registro che ti piace.

+0

Proprio così. Ma a seconda delle necessità dell'OP, potrebbe essere ancora più utile impostare il livello predefinito su INFO o superiore e utilizzare il debug solo per i propri pacchetti, ad esempio. –

3

È possibile specificare il nome del pacchetto richiesto come si può vedere nel seguente esempio:

log4j.logger.com.foo=WARN 

ora si può vedere solo avvertire, ERROR e FATAL log in console .

5

Prima di farlo, si dovrebbe avere avere qualche conoscenza di:

1.How to add maven dependency 
2.Where to put log4j configuration file 

OK, tornare alla domanda. La risposta superiore non funziona per la primavera 4.x, se si utilizza spring4.x provare a seguire 3 passi:

  1. rimuova common-logging da spring-core

    <dependency> 
        <groupId>org.springframework</groupId> 
        <artifactId>spring-core</artifactId> 
        <version>4.3.4.RELEASE</version> 
        <exclusions> 
         <exclusion> 
          <groupId>commons-logging</groupId> 
          <artifactId>commons-logging</artifactId> 
         </exclusion> 
        </exclusions> 
    </dependency> 
    

    Senza questo passo, non importa quello che hai messo nel file di configurazione log4j non funziona, perché la primavera sta usando common-logging mio ragazzo!
    PS: All'interno di molti moduli molla, spring-core è l'unico modulo che dipende esplicitamente da commons-logging.

  2. Aggiungi SLF4J e log4j

    <dependency> 
        <groupId>org.slf4j</groupId> 
        <artifactId>jcl-over-slf4j</artifactId> 
        <version>1.5.8</version> 
    </dependency> 
    <dependency> 
        <groupId>org.slf4j</groupId> 
        <artifactId>slf4j-api</artifactId> 
        <version>1.5.8</version> 
    </dependency> 
    <dependency> 
        <groupId>org.slf4j</groupId> 
        <artifactId>slf4j-log4j12</artifactId> 
        <version>1.5.8</version> 
    </dependency> 
    <dependency> 
        <groupId>log4j</groupId> 
        <artifactId>log4j</artifactId> 
        <version>1.2.14</version> 
    </dependency> 
    
  3. log4j.properties di configurazione (È inoltre possibile utilizzare file XML)

    log4j.rootCategory = INFO, stdout

    log4j.appender.stdout = org.apache.log4j.C onsoleAppender log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern =% d {ABSOLUTE}% 5p% t % c {2}:% L -% m% n

    log4j.category.org.springframework.beans.fabbrica = INFO

Ora, la molla fastidioso registro di debug sta away.Enjoy codifica!

La risposta da doc spring.io, per origine click here

0

mi è stato anche di fronte lo stesso problema. La registrazione di Springframework non è stata rimossa anche dopo la configurazione di log4j. Poi ho scoperto che il suo logging dipende dalla registrazione commons.

È necessario disabilitare commons-logging dalla dipendenza nel file pom.xml dell'app Web.

Anche dopo aver rimosso commons-logging da pom.xml, controllare la gerarchia di dipendenze disponibile in Eclipse o STS IDE. Questo aiuterà a sapere se in qualche modo è stato aggiunto a causa di qualche altra gestione delle dipendenze che potremmo non sapere.

Dopo aver rimosso la dipendenza è sufficiente aggiungere log4j.logger.org.springframework=ERROR alla configurazione di log4j. Questo aiuterà.

2

Tutte le risposte hanno fornito esempi con la configurazione in log4j.properties, che è ciò che è stato chiesto. Ho avuto lo stesso problema ma stavo usando la configurazione in log4j2.xml e le risposte qui mi portano a una soluzione.

Nel caso in cui qualcuno è sulla stessa barca, come me, qui è quello che ho fatto: ho aggiunto un Logger nodo con il nome e il livello org.springframework avvertono come mostrato nel seguente esempio:

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="WARN"> 
    <Appenders> 
     <Console name="Console" target="SYSTEM_OUT"> 
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> 
     </Console> 
    </Appenders> 
    <Loggers> 
     <Logger name="org.springframework" level="WARN"/> 
     <Root level="info"> 
      <AppenderRef ref="Console"/> 
     </Root> 
    </Loggers> 
</Configuration> 

I' m utilizzando Spring Boot e l'esclusione che sto facendo è logback-classic come mostrato nel seguente frammento:

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter</artifactId> 
     <exclusions> 
      <exclusion> 
       <groupId>ch.qos.logback</groupId> 
       <artifactId>logback-classic</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency>