java在执行maven构建或打包时从最终jar中删除记录器行
我知道这是可能的
我的问题是,在执行mvn clean package
时,我想从最终jar中删除一些特定的行(log.info
行)
我的完整代码库中充满了类似于以下代码库的日志行:
class MyClass {
def main(args: Array[String]) {
val log = Utils.getLogger
log.info("Application started")
val url = "https://sunilkumar.in"
log.info(s"Trying to fetch content from url: $url")
...
log.info("Successfully fetched content. Doing something now.")
val v1 = "variable1"
val v2 = "variable2"
log.info(s"Starting to do something with v1: $v1 and v2: $v2")
try {
...
log.info("Successfully done something with variables")
}
catch {
case e: Exception =>
log.severe(s"Failed to do something. Got exception with message: ${e.getMessage}")
}
log.info("Continuing the work")
...
log.info("Finished everything")
}
}
- 这些信息对我理解这个问题有很大帮助 我的代码库失败了。所以我不能移除它们 因为我在开发过程中需要它们李>
- 当我为我的客户构建Jar文件(生产工件)时,我不需要任何日志记录李>
- 如果需要,我可以使用一种模式,通过搜索
log.info
来识别记录器行,因为我使用的变量名都是log
李>
我的问题是:
我不知道在执行mvn clean build package
时在何处以及如何使用此模式从最终jar中删除行,以便:
- 不应该有日志记录李>
- 如果我打开Jar文件并转换
.class
到.java
文件,那么就不应该有日志代码库李>
注意:
- 我的项目是Java和;Scala codebase和我想删除
在任何类中都可以找到
log.info
的所有行,无论是最终jar中的Java还是Scala李> - 我使用
maven-assembly-plugin
创建jar-with-dependencies
作为最终产品李> - 任何其他解决方案都是最受欢迎的李>
# 1 楼答案
是否使用SLF4J,如果是,那么考虑将级别设置为错误。通过将其设置为error,日志中没有任何内容。信息行将被打印出来
一个示例配置供参考
这里,我正在打印日志。控制台出错,因此不会打印信息行。通过将级别更改为info,可以打印info和error语句