2013-09-06 38 views
14

Làm cách nào để tắt Nhật ký mùa xuân để có kết quả đầu ra nhật ký mà tôi có thể dễ đọc hoặc người khác có thể đọc. Câu trả lời cho một câu hỏi tương tự tại, how to disable spring bean loading log được đề xuất để nhận xét tất cả các dòng có org.springframeworksubstring trong log4j.propertiesfile. Trong trường hợp của tôi không có dòng như vậy.Vô hiệu hóa nhật ký mùa xuân, để có các nhật ký có thể đọc được

Đây là 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 

Trả lời

29

Ghi nhật ký mặc định của bạn, cho mọi thứ không được chỉ định rõ ràng, là DEBUG. Vì vậy, tất cả mọi thứ được đăng nhập ở cấp đó (đánh giá từ cấu hình của bạn), về cơ bản bạn đang tràn ngập các bản ghi của bạn. Bạn không nên xóa logger cho org.springframework bạn nên thêm chúng và thiết lập một cấp độ khác cho chúng.

log4j.logger.org.springframework=INFO 

hoặc bất kỳ cấp độ nhật ký nào bạn thích.

+0

Đúng vậy. Nhưng tùy thuộc vào nhu cầu của OP, thậm chí có thể hữu ích hơn khi thực sự thiết lập mức mặc định thành INFO hoặc cao hơn và chỉ sử dụng gỡ lỗi cho các gói của riêng mình. –

3

Bạn có thể chỉ định tên gói cần thiết như có thể thấy trong ví dụ sau:

log4j.logger.com.foo=WARN 

Bây giờ bạn có thể chỉ xem WARN, KHÔNG CÓ LỖI và Fatal bản ghi trong giao diện điều khiển .

5

Trước khi bạn làm, bạn nên có nhận được một số kiến ​​thức về:

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

OK, trở lại câu hỏi. Câu trả lời đầu không hoạt động cho mùa xuân 4.x, nếu bạn đang sử dụng spring4.x thử sau 3 bước sau:

  1. loại bỏ common-logging từ 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> 
    

    Nếu không có bước này, không có vấn đề gì bạn đặt trong tập tin cấu hình log4j không hoạt động, gây ra mùa xuân đang sử dụng common-logging cậu bé của tôi!
    PS: Trong nhiều mô-đun lò xo, spring-core là mô-đun duy nhất phụ thuộc rõ ràng vào commons-logging.

  2. Thêm SLF4J và 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. configure log4j.properties (Bạn cũng có thể sử dụng tập tin 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.nhà máy = INFO

Bây giờ, mùa xuân gây phiền nhiễu debug log sẽ away.Enjoy mã hóa!

Câu trả lời là từ doc spring.io, cho nguồn gốc nhấp chuột here

0

Tôi cũng đã phải đối mặt với vấn đề tương tự. Ghi nhật ký Springframework không bị xóa ngay cả sau khi cấu hình log4j. Sau đó, tôi thấy rằng việc ghi nhật ký của nó phụ thuộc vào việc ghi nhật ký.

Bạn phải tắt commons-logging từ phụ thuộc trong tệp pom.xml của ứng dụng web.

Ngay cả sau khi xóa commons-logging từ pom.xml, vui lòng kiểm tra hệ thống phân cấp phụ thuộc có sẵn trong Eclipse hoặc STS IDE. Điều này sẽ giúp đỡ trong việc biết nếu bằng cách nào đó nó nhận được thêm vì một số quản lý phụ thuộc khác mà chúng ta có thể không biết.

Sau khi xóa phụ thuộc, chỉ cần thêm log4j.logger.org.springframework=ERROR vào cấu hình log4j của bạn. Điều này sẽ giúp.

2

Tất cả các câu trả lời đều đưa ra ví dụ với cấu hình trong log4j.properties, đó là những gì được hỏi. Tôi đã có cùng một vấn đề nhưng tôi đã sử dụng cấu hình trong log4j2.xml và câu trả lời ở đây dẫn tôi đến một giải pháp.

Trong trường hợp ai đó là trên thuyền cũng giống như tôi, đây là những gì tôi đã làm: Tôi đã thêm một Logger nút với tên org.springframework và mức độ cảnh báo như trong ví dụ sau đây:

<?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> 

tôi m sử dụng Khởi động mùa xuân và loại trừ tôi đang thực hiện là logback-classic như được hiển thị trong đoạn mã sau:

<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> 
Các vấn đề liên quan