Sbt: подавление префикса протоколирования в stdout

При использовании sbt с forking (fork in run := true) каждый вывод моего приложения в stdout имеет префикс [info]; вывод в stderr имеет префикс [error].

Это поведение несколько раздражает при использовании фреймворка регистрации Java, который выводится на stderr. Получающиеся отладочные сообщения обычно выглядят следующим образом:

[error] [main] INFO MyClass ...
[error] [main] DEBUG MyClass ...

Я хотел бы подавить эти префиксы, например, при запуске кода без форкирования. Что я пробовал:

  • sbt -Dsbt.log.noformat=true в запуске sbt script. Но это только удаляет цветной выход ANSI; префиксы все еще существуют без цвета
  • настройка logLevel in run := Level.Error в build.sbt. Это, похоже, не влияет на запись с помощью forking.

Есть ли способ подавить префиксы?

Ответ 1

Вам нужно установить стратегию вывода вашего проекта.

В моей расширенной сборке у меня есть следующие настройки:

settings = Project.defaultSettings ++ Seq(
  fork                  :=   true, // Fork to separate process
  connectInput in run   :=   true, // Connects stdin to sbt during forked runs
  outputStrategy        :=   Some(StdoutOutput) // Get rid of output prefix
  // ... other settings
)