Ale nie mogłem zmusić go do pracy . Myślę, że jedynym problemem jest to, że maven wybiera domyślny poziom z pliku konfiguracyjnego w ścieżce klas. Wypróbowałem także kilka innych ustawień za pośrednictwem System.properties, ale wszystkie z nich się nie powiodły.
dodatek
Możesz znaleźć źródło slf4j na github tutaj: slf4j github
czy simplelogger.propertieszmiana zadziałała? Kiedy zmieniam org.slf4j.simpleLogger.warnLevelStringustawienie, mvn compileaktualizuje się odpowiednio, ale wydaje się, że je ignoruje org.slf4j.simpleLogger.defaultLogLevel. Rejestruje również na poziomie informacyjnym, nawet jeśli ustawię ostrzeżenie lub błąd.
Alden
1
@Alden, mam takie samo zachowanie. jest po prostu ignorowany.
jax
18
U mnie okazało się, że dodanie "-Dorg.slf4j.simpleLogger.defaultLogLevel = info" do komendy budowania nie daje żadnego efektu. Jeśli zdefiniuję to przed kompilacją w MAVEN_OPTS w ten sposób: export "MAVEN_OPTS = $ MAVEN_OPTS -Dorg.slf4j.simpleLogger.defaultLogLevel = debug", to działa idealnie bez zmiany pliku $ {MAVEN_HOME} /conf/logging/simplelogger.properties .
Gábor Lipták,
1
Alden, Gábor Lipták: i dla mnie żadna z dwóch metod nie działa. :( Używam Mavena 3.2.5.
Greg Dubicki
1
jeśli windows, w pliku bat, użyj set MAVEN_OPTS =% MAVEN_OPTS% -Dorg.slf4j.simpleLogger.defaultLogLevel = warn
Wydaje się, że to działa, ponieważ mogłem wyłączyć ostrzeżenia i komunikaty informacyjne, ustawiając poziom na błąd, ale niestety wyłączyło to również zwykłe wyjście. W rzeczywistości próbowałem wyłączyć niektóre ostrzeżenia podczas uruchamiania help:evaluatecelu, aby wydrukować wartość, project.versiona to wyjście (choć nie wydaje się, slf4jże wychodzi) również zostało wyłączone.
haridsv
Jedyna odpowiedź, która działa bez ciągłego zakłócania instalacji Mavena. Kolejny powód, dla którego Maven jest dinozaurem w systemie kompilacji - po prostu nie obsługuje wymagań zdrowego rozsądku.
Abhijit Sarkar
16
Jeśli używasz Logback, po prostu umieść ten logback-test.xmlplik w src/test/resourceskatalogu:
Ta odpowiedź jest obecnie PRZESTARZAŁA - a) adres URL repozytorium zmienił się, b) w tym kodzie nie ma instrukcji poziomu INFO, c) adres URL diff nie działa.
Greg Dubicki
Nie ma znaczenia, gdzie kod używa INFO - podczas tworzenia wtyczek, twoje mojo powinno polegać na loggerze maven z getLog()- jeśli możesz żyć z konfigurowalnością.
Adam,
1
Najprostszym sposobem jest uaktualnienie do wersji Maven 3.3.1 lub nowszej, aby skorzystać z${maven.projectBasedir}/.mvn/jvm.config wsparcia.
Następnie można użyć dowolne opcje z Maven za SL4FJ za SimpleLogger wsparcia skonfigurować wszystkie rejestratory lub poszczególne rejestratory. Na przykład, oto jak zrobić wszystkie ostrzeżenia na warnpoziomie, z wyjątkiem PMD, dla którego skonfigurowano logowanie na error:
Zauważyłem, że podczas korzystania z wersji 2.20.1 wtyczki maven sunfire wszystkie ostrzeżenia są zapisywane do pliku zrzutu. na przykład/myproject/target/surefire-reports/2017-11-11T23-02-19_850.dumpstream
-B, --batch-mode
lub-q
będziemvn
mniej gadatliwy.Odpowiedzi:
Odpowiadając na Twoje pytanie
Zrobiłem małe dochodzenie, ponieważ jestem również zainteresowany rozwiązaniem.
Opcje oznajmiania wiersza poleceń Mavena
Według http://books.sonatype.com/mvnref-book/reference/running-sect-options.html#running-sect-verbose-option
Plik konfiguracyjny rejestrowania Maven
Obecnie maven 3.1.x używa SLF4J do logowania się do System.out. Możesz zmodyfikować ustawienia logowania w pliku:
Według strony: http://maven.apache.org/maven-logging.html
Konfiguracja wiersza poleceń
Myślę, że powinieneś być w stanie ustawić domyślny poziom dziennika prostego rejestratora za pomocą parametru wiersza poleceń, na przykład:
Ale nie mogłem zmusić go do pracy . Myślę, że jedynym problemem jest to, że maven wybiera domyślny poziom z pliku konfiguracyjnego w ścieżce klas. Wypróbowałem także kilka innych ustawień za pośrednictwem System.properties, ale wszystkie z nich się nie powiodły.
dodatek
Możesz znaleźć źródło slf4j na github tutaj: slf4j github
Źródło simpleelogger tutaj: simpleeloggera slf4j / jcl-over-slf4j / src / main / java / org / apache / commons / logging / impl / SimpleLog.java
Moduł ładujący plexus ładuje plik
simplelogger.properties
.źródło
simplelogger.properties
zmiana zadziałała? Kiedy zmieniamorg.slf4j.simpleLogger.warnLevelString
ustawienie,mvn compile
aktualizuje się odpowiednio, ale wydaje się, że je ignorujeorg.slf4j.simpleLogger.defaultLogLevel
. Rejestruje również na poziomie informacyjnym, nawet jeśli ustawię ostrzeżenie lub błąd.Linux:
lub
Okna:
źródło
mvn validate clean install | findstr /V /B "\[INFO\]" | findstr /V /B "\[WARN\]"
findstr
obsługuje wyrażenia regularne i inne opcje, które mogą sprawić, że będzie bardziej zwięzły - ss64.com/nt/findstr.htmlmvn validate clean install | findstr /V /R "^\[INFO\] ^\[WARN\]"
Możesz to osiągnąć na przykład za pomocą MAVEN_OPTS
MAVEN_OPTS=-Dorg.slf4j.simpleLogger.defaultLogLevel=warn mvn clean
Zamiast umieszczać właściwość systemową bezpośrednio w wierszu poleceń. (Przynajmniej dla maven 3.3.1.)
Rozważ użycie
~/.mavenrc
do ustawienia,MAVEN_OPTS
jeśli chcesz zmienić rejestrowanie dla swojego loginu we wszystkich wywołaniach maven.źródło
help:evaluate
celu, aby wydrukować wartość,project.version
a to wyjście (choć nie wydaje się,slf4j
że wychodzi) również zostało wyłączone.Jeśli używasz Logback, po prostu umieść ten
logback-test.xml
plik wsrc/test/resources
katalogu:źródło
możesz to osiągnąć, używając poniżej w samym wierszu poleceń
np .:
źródło
Niestety, nawet w przypadku maven 3 jedynym sposobem na to jest łatanie kodu źródłowego.
Oto krótka instrukcja, jak to zrobić.
Clone or fork Maven 3 repo: „git clone https://github.com/apache/maven-3.git ”
Edytuj rejestrowanie org.apache.maven.cli.MavenCli # i zmień
do
W obecnej wersji migawki znajduje się w linii 270
Następnie uruchom "mvn install", twoja nowa dystrybucja Maven będzie zlokalizowana w folderze "apache-maven \ target \"
Zobacz tę różnicę w celach informacyjnych: https://github.com/ushkinaz/maven-3/commit/cc079aa75ca8c82658c7ff53f18c6caaa32d2131
źródło
getLog()
- jeśli możesz żyć z konfigurowalnością.Najprostszym sposobem jest uaktualnienie do wersji Maven 3.3.1 lub nowszej, aby skorzystać z
${maven.projectBasedir}/.mvn/jvm.config
wsparcia.Następnie można użyć dowolne opcje z Maven za SL4FJ za SimpleLogger wsparcia skonfigurować wszystkie rejestratory lub poszczególne rejestratory. Na przykład, oto jak zrobić wszystkie ostrzeżenia na
warn
poziomie, z wyjątkiem PMD, dla którego skonfigurowano logowanie naerror
:Zobacz tutaj, aby uzyskać więcej informacji na temat logowania za pomocą Mavena.
źródło
Zmiana
info
abyerror
wsimplelogging.properties
pliku pomoże w osiągnięciu swoje wymagania.Po prostu zmień wartość poniższej linii
do
źródło
Zauważyłem, że podczas korzystania z wersji 2.20.1 wtyczki maven sunfire wszystkie ostrzeżenia są zapisywane do pliku zrzutu. na przykład
/myproject/target/surefire-reports/2017-11-11T23-02-19_850.dumpstream
źródło
Przejdź do
simplelogger.properties
in${MAVEN_HOME}/conf/logging/
i ustaw następujące właściwości:I uważaj:
warn
niewarning
źródło