Saya ingin mencegah pakar menampilkan pesan INFO, saya hanya ingin melihat PERINGATAN dan KESALAHAN (jika ada).
Bagaimana saya bisa mencapai ini, lebih disukai dengan mengubah baris perintah yang memanggil pakar?
Saya ingin mencegah pakar menampilkan pesan INFO, saya hanya ingin melihat PERINGATAN dan KESALAHAN (jika ada).
Bagaimana saya bisa mencapai ini, lebih disukai dengan mengubah baris perintah yang memanggil pakar?
Jawaban:
Saya melakukan penyelidikan kecil karena saya juga tertarik dengan solusinya.
Saat ini pakar 3.1.x menggunakan SLF4J untuk masuk ke System.out. Anda dapat mengubah pengaturan pencatatan pada file:
${MAVEN_HOME}/conf/logging/simplelogger.properties
Menurut halaman: http://maven.apache.org/maven-logging.html
Saya pikir Anda harus dapat mengatur level Log default dari logger sederhana melalui parameter baris perintah, seperti ini:
$ mvn clean package -Dorg.slf4j.simpleLogger.defaultLogLevel=debug
Tetapi saya tidak bisa membuatnya bekerja . Saya kira satu-satunya masalah dengan ini adalah, maven mengambil level default dari file konfigurasi di classpath. Saya juga mencoba beberapa pengaturan lain melalui System.properties, tetapi semuanya tidak berhasil.
Anda dapat menemukan sumber slf4j di github di sini: slf4j github
Sumber simplelogger di sini: slf4j / jcl-over-slf4j / src / main / java / org / apache / commons / logging / impl / SimpleLog.java
Loader plexus memuat simplelogger.properties
.
simplelogger.properties
perubahan berfungsi? Ketika saya mengubah pembaruan org.slf4j.simpleLogger.warnLevelString
pengaturan dengan mvn compile
tepat, tetapi tampaknya mengabaikan org.slf4j.simpleLogger.defaultLogLevel
pengaturan. Itu juga masuk pada tingkat info, bahkan ketika saya mengatur itu untuk memperingatkan atau kesalahan.
mvn validate clean install | egrep -v "(^\[INFO\])"
atau
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
mendukung regex dan opsi lain yang mungkin membuatnya lebih ringkas - ss64.com/nt/findstr.html
mvn validate clean install | findstr /V /R "^\[INFO\] ^\[WARN\]"
Anda dapat mencapainya dengan MAVEN_OPTS, misalnya
MAVEN_OPTS=-Dorg.slf4j.simpleLogger.defaultLogLevel=warn mvn clean
Daripada menempatkan properti sistem langsung di baris perintah. (Setidaknya untuk pakar 3.3.1.)
Pertimbangkan ~/.mavenrc
untuk menggunakan pengaturan MAVEN_OPTS
jika Anda ingin login diubah untuk login Anda di semua doa pakar.
help:evaluate
target untuk mencetak nilai project.version
dan output ini (meskipun sepertinya tidak datang slf4j
) juga dimatikan.
Jika Anda menggunakan Logback, cukup masukkan logback-test.xml
file ini ke src/test/resources
direktori:
<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>
Anda dapat mencapai ini dengan menggunakan di bawah ini di commandline itu sendiri
-e for error
-X for debug
-q for only error
misalnya:
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]
Sayangnya, bahkan dengan maven 3 satu-satunya cara untuk melakukannya adalah dengan menambal kode sumber.
Ini adalah instruksi singkat bagaimana melakukannya.
Klon atau garpu repo Maven 3: "git clone https://github.com/apache/maven-3.git "
Edit org.apache.maven.cli.MavenCli # logging, dan ubah
cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_INFO );
untuk
cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_WARN );
Dalam versi snapshot saat ini ada di baris 270
Kemudian jalankan "mvn install", distro maven baru Anda akan berada di folder "apache-maven \ target \"
Lihat perbedaan ini untuk referensi: https://github.com/ushkinaz/maven-3/commit/cc079aa75ca8c82658c7ff53f18c6caaa32d2131
getLog()
- jika Anda dapat hidup dengan konfigurabilitas.
Cara paling sederhana adalah memutakhirkan ke Maven 3.3.1 atau lebih tinggi untuk memanfaatkan ${maven.projectBasedir}/.mvn/jvm.config
dukungan.
Kemudian Anda dapat menggunakan opsi apa pun dari dukungan SimpleLogger SL4FJ dari Maven untuk mengonfigurasi semua penebang atau penebang tertentu. Sebagai contoh, berikut adalah cara membuat semua peringatan di warn
level, kecuali untuk PMD yang dikonfigurasi untuk masuk error
:
cat .mvn/jvm.config
-Dorg.slf4j.simpleLogger.defaultLogLevel=warn -Dorg.slf4j.simpleLogger.log.net.sourceforge.pmd=error
Lihat di sini untuk detail lebih lanjut tentang logging dengan Maven.
Saya perhatikan ketika menggunakan versi 2.20.1 dari plugin maven sunfire , semua peringatan dituliskan ke file dumpstream. misalnya/myproject/target/surefire-reports/2017-11-11T23-02-19_850.dumpstream
-B, --batch-mode
atau-q
akan membuatmvn
lebih sedikit verbose.