2010-10-15 34 views
20

Tôi không thể điều chỉnh mức ghi nhật ký của nhật ký java. Tôi đang sử dụng maven surefire (thử nghiệm mvn), và cố gắng điều chỉnh từ INFO mặc định đến ví dụ. CUỐI CÙNG.Mức nhật ký dưới maven chắc chắn

tôi có nộp logging.properties dưới src/kiểm tra/nguồn/logging.properties

sau khi biên dịch, tôi thấy dưới mục tiêu/thử nghiệm lớp học, tôi thấy một tập tin logging.properties với cấu hình dự kiến:

java.util.logging.ConsoleHandler.level = FINEST

javax.enterprise.system.container.ejb.level = FINE

...

tuy nhiên đầu ra bàn điều khiển từ thủy tinh chỉ có thông báo mức INFO/SEVERE.

Tôi đã gặp sự cố ở đâu? hoặc là một nỗi đau khác trong điều mông với maven?

+0

Tôi hơi bối rối ở đây. Thủy tinh phù hợp với điều này như thế nào? Tôi nghĩ rằng có khả năng bạn đang bối rối giữa việc đăng nhập của glassfish và đăng nhập thử nghiệm đơn vị quạ. Khung công tác xây dựng maven sử dụng để ghi nhật ký là gì? – drekka

+0

Tôi đang gỡ lỗi một thử nghiệm đơn vị sử dụng vùng chứa Nhúng trong glassfish v3. theo: http://forums.java.net/jive/thread.jspa?messageID=395759, dưới sự trả lời của 'Marina Vatkina', thats chìa khóa để sản xuất tin nhắn FINE cho container EJB ... Tôi đoán câu hỏi của tôi là sao thiết lập của tôi là chính xác cho việc ghi nhật ký java util? Hoặc có thêm cấu hình cần thiết không? - không chỉ cho trường hợp cụ thể này, nhưng cho phép nói rằng tôi có một lớp com.something.Main, và tôi muốn xuất thông điệp FINEST cho nó ... – Dzhu

Trả lời

8

Bạn cần chỉ định trình xử lý của mình trong tệp nhật ký

handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler 

sau đó nó nên làm việc

3

Hình như nó không thể nào được nêu dưới maven ?:

http://jira.codehaus.org/browse/MNG-2570

Ngoài ra khi tôi thiết lập các pom sử dụng một tùy chỉnh thuộc tính java.util.logging nộp như sau:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.4.2</version> 
    <configuration> 
    <systemProperties> 
     <property> 
     <name>java.util.logging.config.file</name> 
     <value>${project.build.directory}/test-classes/logging.properties</value> 
     </property> 
    </systemProperties> 
    ... 

việc ghi nhật ký biến mất ...

+0

Tôi chỉ nhận được đăng nhập Tôi có thể kiểm soát nếu tôi chỉ định vị trí của việc ghi nhật ký. tệp thuộc tính với thuộc tính hệ thống. Cách thể hiện thuộc tính của bạn làm việc cho tôi, cũng như 'src/test/resources/logging.properties'. – sjlevin

3

thử

${build.testOutputDirectory}/logging.properties 

Ngoài ra, tôi xác định công cụ này trên dòng lệnh với surfire-args.

<argLine>${surefire.argLine} ${argLine} -Djava.util.logging.config.file=${build.testOutputDirectory}/logging.properties</argLine> 
14

tôi đã cố gắng thiết lập java.util.logging.config.file trong biến môi trường MAVEN_OPTS, mà không làm việc nhưng cuối cùng đã nhận nó làm việc bằng cách đặt mà sở hữu hệ thống trong pom.xml (và tất nhiên tạo ra một logging.properties thích hợp trong src/kiểm tra/nguồn lực):

<plugins> 
     <plugin> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <configuration> 
      <systemProperties> 
      <property> 
       <name>java.util.logging.config.file</name> 
       <value>src/test/resources/logging.properties</value> 
      </property> 
      </systemProperties> 
     </configuration> 
     </plugin> 
    </plugins> 
+0

Đặt '-Djava.util.logging.config.file' trên dòng lệnh maven không hoạt động đối với tôi, nhưng điều này đã làm. – sjlevin

+0

Bởi vì plugin chắc chắn không propogate tất cả các thuộc tính hệ thống bạn đã thông qua để maven một dòng lệnh để thực thi kiểm tra đơn vị thực tế –

1

tôi đã nhìn vào vấn đề này chính xác, nhưng không muốn một sự thay đổi cấu hình dự án (pom.xml) tập tin cho mỗi khi tôi cần ghi cụ thể trên một kiểm tra.

Thuộc tính -D hoạt động từ dòng lệnh maven.

Vì vậy bạn có thể chọn các tập tin cấu hình đăng nhập từ dòng lệnh:

mvn -Djava.util.logging.config.file=`enter filename here` test 

Nếu bạn đang sử dụng mức chung mẫu số .level=FINEST lưu ý rằng bên thứ 3 khai thác gỗ cũng sẽ xuất hiện ở mức độ đó.

Để tắt hoặc đặt đăng nhập maven hoặc bên thứ ba ở một mức cụ thể, hãy sử dụng lựa chọn mức nhật ký rõ ràng cho các lớp đó trong tệp cấu hình nhật ký đã chọn.

tôi có rất nhiều dòng log từ com.google.inject .....

aug 08, 2014 12:14:33 PM com.google.inject.internal.util.$Stopwatch resetAndLog 
FINE: Instance member validation: 3ms 
aug 08, 2014 12:14:33 PM com.google.inject.internal.util.$Stopwatch resetAndLog 
FINE: Provider verification: 1ms 
aug 08, 2014 12:14:33 PM com.google.inject.internal.util.$Stopwatch resetAndLog 
FINE: Static member injection: 1ms 

Vì vậy, tôi thêm:

com.google.inject.level=INFO 

đến tập tin. Hãy nhớ rằng cài đặt mức là đệ quy cho tất cả các lớp con. Do đó com.level=NONE sẽ tắt tất cả nhật ký cho tất cả nhật ký từ miền com.

Kết hợp tính năng này với tính năng chọn kiểm tra -Dtest=... trong plugin chắc chắn được mô tả here rất tốt để tách lỗi và lỗi.

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