Tôi muốn ngăn maven hiển thị tin nhắn INFO, tôi chỉ muốn xem CẢNH BÁO và LRI (nếu có).
Làm thế nào tôi có thể đạt được điều này, tốt nhất là bằng cách thay đổi dòng lệnh gọi maven?
Tôi muốn ngăn maven hiển thị tin nhắn INFO, tôi chỉ muốn xem CẢNH BÁO và LRI (nếu có).
Làm thế nào tôi có thể đạt được điều này, tốt nhất là bằng cách thay đổi dòng lệnh gọi maven?
Câu trả lời:
Tôi đã thực hiện một cuộc điều tra nhỏ vì tôi cũng quan tâm đến giải pháp.
Theo http://books.sonatype.com/mvnref-book/reference/rucky-sect-options.html#rucky-sect-verbose-option
Hiện tại maven 3.1.x sử dụng SLF4J để đăng nhập vào System.out. Bạn có thể sửa đổi cài đặt ghi nhật ký tại tệp:
${MAVEN_HOME}/conf/logging/simplelogger.properties
Theo trang: http://maven.apache.org/maven-logging.html
Tôi nghĩ bạn sẽ có thể thiết lập mức Nhật ký mặc định của trình ghi nhật ký đơn giản thông qua tham số dòng lệnh, như sau:
$ mvn clean package -Dorg.slf4j.simpleLogger.defaultLogLevel=debug
Nhưng tôi không thể làm cho nó hoạt động . Tôi đoán vấn đề duy nhất với điều này là, maven chọn mức mặc định từ tệp cấu hình trên đường dẫn lớp. Tôi cũng đã thử một vài cài đặt khác thông qua System.properies, nhưng tất cả chúng đều không thành công.
Bạn có thể tìm thấy nguồn của slf4j trên github tại đây: slf4j github
Nguồn của Simpleelogger ở đây: slf4j / jcl-over-slf4j / src / main / java / org / apache / commons / log / impl / SimpleLog.java
Trình tải plexus tải simplelogger.properties.
simplelogger.propertiesthay đổi làm việc? Khi tôi thay đổi org.slf4j.simpleLogger.warnLevelStringcài đặt mvn compilecập nhật một cách thích hợp, nhưng dường như nó đang bỏ qua org.slf4j.simpleLogger.defaultLogLevelcài đặt. Nó cũng ghi nhật ký ở cấp thông tin, ngay cả khi tôi đặt nó để cảnh báo hoặc lỗi.
mvn validate clean install | egrep -v "(^\[INFO\])"
hoặc là
mvn validate clean install | egrep -v "(^\[INFO\]|^\[DEBUG\])"
mvn validate clean install | findstr /V /R "^\[INFO\] ^\[DEBUG\]"
mvn validate clean install | findstr /V /B "\[INFO\]" | findstr /V /B "\[WARN\]"
findstrhỗ trợ regex và các tùy chọn khác có thể khiến nó trở nên cô đọng hơn - ss64.com/nt/findstr.html
mvn validate clean install | findstr /V /R "^\[INFO\] ^\[WARN\]"
Bạn có thể đạt được điều này với MAVEN_OPTS, ví dụ
MAVEN_OPTS=-Dorg.slf4j.simpleLogger.defaultLogLevel=warn mvn clean
Thay vì đặt thuộc tính hệ thống trực tiếp trên dòng lệnh. (Ít nhất là đối với maven 3.3.1.)
Cân nhắc sử dụng ~/.mavenrcđể cài đặt MAVEN_OPTSnếu bạn muốn đăng nhập thay đổi cho thông tin đăng nhập của bạn trên tất cả các yêu cầu maven.
help:evaluatemục tiêu để in giá trị project.versionvà đầu ra này (mặc dù dường như không đi qua slf4j) cũng bị tắt.
Nếu bạn đang sử dụng Logback, chỉ cần đặt logback-test.xmltệp này vào src/test/resourcesthư mục:
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>
bạn có thể đạt được điều này bằng cách sử dụng bên dưới trong chính dòng lệnh
-e for error
-X for debug
-q for only error
ví dụ :
mvn test -X -DsomeProperties='SomeValue' [For Debug level Logs]
mvn test -e -DsomeProperties='SomeValue' [For Error level Logs]
mvn test -q -DsomeProperties='SomeValue' [For Only Error Logs]
Thật không may, ngay cả với maven 3, cách duy nhất để làm điều đó là vá mã nguồn.
Dưới đây là hướng dẫn ngắn làm thế nào để làm điều đó.
Bản sao hoặc ngã ba Maven 3 repo: "git clone https://github.com/apache/maven-3.git "
Chỉnh sửa org.apache.maven.cli.MavenCli # ghi nhật ký và thay đổi
cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_INFO );
đến
cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_WARN );
Trong phiên bản chụp nhanh hiện tại, nó ở dòng 270
Sau đó, chỉ cần chạy "mvn install", bản phân phối maven mới của bạn sẽ nằm trong thư mục "apache-maven \ target \"
Xem khác biệt này để tham khảo: https://github.com/ushkinaz/maven-3/commit/cc079aa75ca8c82658c7ff53f18c6caaa32d2131
getLog()- nếu bạn có thể sống với cấu hình.
Cách đơn giản nhất là nâng cấp lên Maven 3.3.1 trở lên để tận dụng sự ${maven.projectBasedir}/.mvn/jvm.confighỗ trợ.
Sau đó, bạn có thể sử dụng bất kỳ tùy chọn nào từ bộ phận hỗ trợ SimpleLogger của Maven's SL4FJ để định cấu hình tất cả các logger hoặc logger cụ thể. Ví dụ, đây là cách thực hiện tất cả cảnh báo ở warncấp độ, ngoại trừ PMD được định cấu hình để đăng nhập tại error:
cat .mvn/jvm.config
-Dorg.slf4j.simpleLogger.defaultLogLevel=warn -Dorg.slf4j.simpleLogger.log.net.sourceforge.pmd=error
Xem ở đây để biết thêm chi tiết về đăng nhập với Maven.
Thay đổi infothành errortrong simplelogging.propertiestập tin sẽ giúp đạt được yêu cầu của bạn.
Chỉ cần thay đổi giá trị của dòng dưới đây
org.slf4j.simpleLogger.defaultLogLevel=info
đến
org.slf4j.simpleLogger.defaultLogLevel=error
Tôi đã nhận thấy khi sử dụng phiên bản 2.20.1 của plugin maven sunfire , tất cả các cảnh báo được ghi vào một tệp kết xuất. ví dụ/myproject/target/surefire-reports/2017-11-11T23-02-19_850.dumpstream
-B, --batch-modehoặc-qsẽ làm chomvnít dài dòng hơn.