Удалите строки логгера из окончательного фляги, выполняя сборку или пакет maven - PullRequest
0 голосов
/ 12 октября 2018

Я знаю, что можно удалять или пропускать файлы и папки при выполнении maven clean .

Моя проблема заключается в том, что я хочу удалить некоторые конкретные строки (log.info строки)из последнего jar при выполнении mvn clean package.

Моя полная кодовая база заполнена строками регистратора, подобными следующей кодовой базе:

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, чтобы:

  1. не было никакой регистрации.
  2. Если я открою файл Jar и преобразую .class в .java файл, тогда не должно быть базы кодов журналирования.

Примечание:

  • Мой проект представляет собой смесь кодовой базы Java и Scala, и я хочу удалить все строки, в которых log.info найден в любом классе, будь то Java или Scala в конечном jar.
  • Я используюmaven-assembly-plugin для создания jar-with-dependencies в качестве конечного продукта.
  • Любое другое решение наиболее приветствуется.

1 Ответ

0 голосов
/ 21 октября 2018

Используете ли вы slf4j, если так, то подумайте об установке уровня на ошибку.При установке на ошибку ни одна из строк log.info не будет напечатана.

Пример конфигурации для справки

    <configuration scan="true" scanPeriod="60 seconds">

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSSZ,UTC} %X{requestId} %X{req.remoteHost} %X{req.xForwardedFor}
                %X{req.requestURI} [%thread] %-5level [%logger{0}] %msg%n
            </pattern>
        </encoder>
    </appender>

    <root level="error">
        <appender-ref ref="CONSOLE"/>
    </root>

</configuration>

Здесь я печатаю log.error в консоль, поэтому информационные строкине будет напечатан.Изменив уровень на info, вы можете распечатать информацию и сообщения об ошибках

...