java - 如何抑制一些 Maven 日志但保留其他输出?
问题描述
我在 CI 环境中运行 Maven 并希望查看它的一些日志输出 - 但我不想看到有关下载工件等的常规消息。
我可以使用-q
,但这也抑制了所有有用的东西。
Maven 使用 slf4j,默认情况下使用 slf4j-simple 后端,所以没有logging.properties
等,无论如何,我什至如何找出哪个类生成日志消息?
例如,如果我有
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] XXX JDBC Driver - JDBC 4.2 [bundle]
[INFO] XXX JDBC Driver aggregate [pom]
[INFO]
[INFO] -----------------< XXX:XXX >------------------
[INFO] Building XXX JDBC Driver - JDBC 4.2 XXXX [1/2]
[INFO] -------------------------------[ bundle ]-------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ XXXX-jdbc ---
[INFO] Deleting XXXX/target
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (enforce-java) @ XXX-jdbc ---
[INFO]
[INFO] --- build-helper-maven-plugin:1.5:parse-version (parse-version) @ XXXX-jdbc ---
[INFO]
[INFO] --- properties-maven-plugin:1.0-alpha-2:read-project-properties (default) @ XXXX-jdbc ---
[WARNING] Ignoring missing properties file: XXX/build.local.properties
[INFO]
[INFO] --- jcp:6.0.1:preprocess (preprocessSources) @ XXX-jdbc ---
[INFO] Added MAVEN property mvn.project.name=XXX JDBC Driver - JDBC 4.2
[INFO] Added MAVEN property mvn.project.version=XX.YY.ZZ
.... blah blah blah ...
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running XXX.TestSuite
Tests run: 58, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 6.43 sec
对于这个任务,我只想要测试输出,我该怎么做?
解决方案
Maven 使用slf4j-simple。它的配置是从文件中的类路径加载的simplelogger.properties
。您可以修改类路径以首先放置您自己的此文件副本,但您也可以通过设置系统属性来覆盖这些属性。
首先重新运行您的构建,-D-Dorg.slf4j.simpleLogger.showLogName=true
以便您可以查看日志来自哪些类。然后通过设置名为-Dorg.slf4.simpleLogger.log.[[classname]]=[[level]]
.
您可能也需要-B
(batch) 标志。
我发现在我的项目中的文件中设置这些很方便.mvn/maven.config
,但是您可以使用MAVEN_OPTS
或命令行来代替。一个例子.mvn/maven.config
可能是:
-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn
-Dorg.slf4j.simpleLogger.log.com.igormaznitsa.jcp.maven.PreprocessorMojo=warn
-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.event.ExecutionEventLogger=warn
-Dorg.slf4j.simpleLogger.log.org.apache.maven.shared.filtering.DefaultMavenResourcesFiltering=warn
-Dorg.slf4j.simpleLogger.log.org.apache.maven.plugin.clean.CleanMojo=warn
-Dorg.slf4j.simpleLogger.showLogName=true
请注意,将这些选项放在正在编译的simplelogging.properties
项目的 a 中是行不通的,它必须在maven 运行时的类路径中。
还要注意.mvn/maven.config
似乎不支持评论。我试过了#
,,,,。;
//
/* .. */
推荐阅读
- css - 页脚隐藏内容
- python - Tensorflow 似乎有科学记数法的问题
- java - LinkedList 或 HashSet 等类是否被视为依赖项?
- javascript - 我如何从不同的组件调用默认函数
- matlab - Matlab:按另一个需要年龄的向量对数组进行排序
- javascript - React and Bootstrap Javascript
- azure-devops - Azure 数据工厂 - 下载 Json 定义
- angular - 在我的 angular-cli 项目中从 node-sass 切换到 dart sass
- excel - 如何隐藏 VBA 命名范围中的列?
- npm - 自定义 Webpack 包装器库未安装依赖项