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.properties
thay đổi làm việc? Khi tôi thay đổi org.slf4j.simpleLogger.warnLevelString
cài đặt mvn compile
cập nhật một cách thích hợp, nhưng dường như nó đang bỏ qua org.slf4j.simpleLogger.defaultLogLevel
cà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\]"
findstr
hỗ 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_OPTS
nế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:evaluate
mục tiêu để in giá trị project.version
và đầ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.xml
tệp này vào src/test/resources
thư 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.config
hỗ 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 ở warn
cấ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 info
thành error
trong simplelogging.properties
tậ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-mode
hoặc-q
sẽ làm chomvn
ít dài dòng hơn.