2012-12-18 31 views
11

Dấu vết và nhật ký gỡ lỗi có thể hữu ích trong khi phát triển trong IDE, nhưng trong quá trình xây dựng, tôi thấy những dòng này khá đáng lo ngại và làm xáo trộn báo cáo được in ra bởi maven hoặc các công cụ xây dựng khác.Vô hiệu hóa nhật ký Log4J trong giai đoạn thử nghiệm maven

Sẽ rất tuyệt khi có log4j tôn vinh thuộc tính hệ thống như -Dlog4j.rootLogger=OFF để sử dụng với maven hoặc thứ gì đó không yêu cầu thay đổi trên tệp dự án. Tôi biết tôi có thể chỉ định -Dlog4j.configuration=alternateconfig.props nhưng tôi yêu cầu ở đây để tìm hiểu xem ai đó đã tìm thấy cách thông minh hơn để tắt ghi nhật ký trong quá trình xây dựng với sự can thiệp thủ công tối thiểu. I E. một số lớp java phát hiện maven là người gọi vô hiệu hóa log4j, hoặc các giải pháp thông minh khác.

Bất kỳ gợi ý nào?

Ghi chú:

[1]: đã thử và không hoạt động.

[2]: đó là khá tốt, nhưng nó dường như không làm việc tốt với maven (bỏ qua có lẽ chắc chắn hơn nó)

+1

2 * không * hoạt động, nếu bạn cập nhật tùy chọn JVM của chắc chắn và là giải pháp tốt nhất IMHO – artbristol

+0

@artbristol có vẻ đầy hứa hẹn. Vì vậy, nó sẽ là một lựa chọn mà chỉ ảnh hưởng đến việc xây dựng maven, đó là chính xác những gì tôi đang tìm kiếm. Tôi sẽ kiểm tra khả năng này càng sớm càng tốt. –

Trả lời

15

Như được giải thích bởi @artbristol (nhận xét về câu hỏi), điều này có thể được định cấu hình chắc chắn. Nó có thể được thực hiện theo cách này trong pom.xml:

 <plugin> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.5</version> 
      <configuration> 
       <forkMode>always</forkMode> 
       <systemPropertyVariables> 
        <log4j.configuration>file:${basedir}/etc/log4j-silent.properties</log4j.configuration> 
       </systemPropertyVariables> 
      </configuration> 
     </plugin> 

Sau đó, có file ${basedir}/etc/log4j-silent.properties với các thiết lập sau đây không lừa:

log4j.rootLogger=OFF 

Các log4j được hoàn toàn bị vô hiệu hóa trong quá trình thử chạy trong maven, và mọi thứ hoạt động bình thường trong IDE.

Giải pháp tốt hơn sẽ không có tệp cấu hình bổ sung; nhưng không thể tìm thấy nó cho đến nay.

+2

Tôi đã sử dụng phương thức logger im lặng của bạn bằng cách đặt tệp log4j.properties trong thư mục test/resources/của mình rootLogger = TẮT dòng trong đó. Nó được sao chép vào classpath của các bài kiểm tra và chọn. Không có khiếu nại về cấu hình không logger, và không có đầu ra logger :) – Jazzepi

7

Chỉ định một tập tin cấu hình thử nghiệm log4j không có appender.

Ví dụ: nếu bạn có một log4j.properties trong src/main/resources, sau đó sao chép nó vào src/test/resouces và xóa trình cài đặt hoặc đặt mức nhật ký thành số người chết.

+2

có thể tắt ghi nhật ký cũng trong IDE (nó có trong IntelliJ IDEA, tôi giả sử nó không thay thế trong nhật thực) –

2

Dựa trên các câu trả lời trước, tôi sử dụng:

<plugin> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.5</version> 
    <configuration> 
     <forkMode>always</forkMode> 
     <argLine>-Dlog4j.configuration=</argLine> 
    </configuration> 
</plugin> 

Sản lượng Maven cho thấy một cảnh báo về log4j không được khởi tạo, nhưng khác hơn là nó có vẻ làm việc.

Các vấn đề liên quan