2013-09-06 9 views
14

Jak wyłączyć dzienniki sprężyn, aby mieć wyjścia dziennika, które mogę łatwo odczytać lub które ktoś może przeczytać. Odpowiedź na podobne pytanie pod adresem how to disable spring bean loading log zasugerowano, aby skomentować wszystkie linie mające org.springframeworksubstring w log4j.propertiesfile. W moim przypadku nie ma takich linii.Wyłączanie dziennika sprężyn, aby mieć czytelne dzienniki

Oto 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 

Odpowiedz

29

Twoje domyślne rejestrowanie, dla wszystkiego, co nie zostało jednoznacznie określone, to DEBUG. Więc wszystko jest zalogowane na tym poziomie (sądząc po konfiguracji), w zasadzie zalewasz swoje dzienniki. Nie powinieneś usuwać rejestratorów dla org.springframework, powinieneś je dodać i ustawić dla nich inny poziom.

log4j.logger.org.springframework=INFO 

lub dowolny poziom poziomu logowania, jaki lubisz.

+0

Zgadza się. Ale w zależności od potrzeb PO może być nawet bardziej przydatne, aby ustawić domyślny poziom na INFO lub wyższy i użyć debugowania tylko dla własnych pakietów, na przykład. –

3

Można określić wymaganą nazwę pakietu, jak widać na poniższym przykładzie:

log4j.logger.com.foo=WARN 

Teraz widać tylko ostrzec, błąd i śmiertelne dzienniki w konsoli .

5

Przed zrobić, trzeba mieć trochę wiedzy o:

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

OK, powrót do tej kwestii. Górny odpowiedź nie działa na wiosnę 4.x, jeśli używasz spring4.x spróbować po 3 etapach:

  1. usuwają common-logging z 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> 
    

    Bez tego kroku, bez względu na to, co umieścisz w pliku konfiguracyjnym log4j, nie działa, bo wiosna używa common-logging mojego chłopaka!
    PS: W przypadku wielu modułów sprężynowych, spring-core jest jedynym modułem, który jawnie zależy od commons-logging.

  2. Dodaj slf4j i 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. Konfiguracja log4j.properties (Można również użyć pliku 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 {ABSOLUTNY}% 5p% t % c {2}:% L -% m% n

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

Teraz irytujące wiosna debug log będzie away.Enjoy kodowania!

Odpowiedź jest od spring.io doc, do pochodzenia kliknięcia here

0

Byłem też w obliczu tego samego problemu. Rejestrowanie Springframework nie było usuwane nawet po konfiguracji log4j. Potem odkryłem, że jego rejestracja zależy od logowania do commons.

Musisz wyłączyć commons-logging z zależności w pliku pom.xml aplikacji internetowej.

Nawet po usunięciu commons-logging z pom.xml sprawdź hierarchię zależności dostępną w Eclipse lub STS IDE. Pomoże to w zrozumieniu, czy w jakiś sposób jest on dodawany z powodu innego zarządzania zależnościami, o którym może nie wiedzieć. Po usunięciu zależności wystarczy dodać log4j.logger.org.springframework=ERROR do konfiguracji log4j. To pomoże.

2

Wszystkie odpowiedzi dały przykłady z konfiguracją w log4j.properties, o to właśnie pytano. Miałem ten sam problem, ale używałem konfiguracji w log4j2.xml, a odpowiedzi tutaj prowadzą mnie do rozwiązania.

W przypadku gdy ktoś jest na tym samym wózku co ja, oto co zrobiłem: dodałem Logger węzła o nazwie org.springframework i poziom WARN, jak pokazano w poniższym przykładzie:

<?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 za pomocą Spring Boot, a wykluczenie, które robię, jest logback-classic, jak pokazano w poniższym fragmencie:

<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> 
Powiązane problemy