mirror of
https://github.com/enso-org/enso.git
synced 2024-12-26 14:22:20 +03:00
34 lines
1.5 KiB
Scala
34 lines
1.5 KiB
Scala
|
package sbt.internal.util
|
||
|
|
||
|
import sbt.internal.LogManager
|
||
|
import sbt.internal.util.ConsoleAppender.{Properties, noSuppressedMessage}
|
||
|
|
||
|
object CustomLogManager {
|
||
|
def excludeMsg(msgPrefix: String, level: sbt.Level.Value): LogManager = {
|
||
|
sbt.internal.LogManager.
|
||
|
withLoggers((_, _) => new CustomAppender(level, msgPrefix, ConsoleOut.systemOut))
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns a custom ConsoleAppender that will skip log messages starting with a certain prefix.
|
||
|
*
|
||
|
* The only reason for such appender is to force SBT to keep quiet about certain kind of messages
|
||
|
* coming from the analyzing compiler (wrapper around java compiler) when it tries to match class files
|
||
|
* to source files. There is absolutely no way to tell SBT that that some sources are being generated from
|
||
|
* annotation processors and it will get them during the same compilation round. Nor can we easily
|
||
|
* suppress such warning.
|
||
|
*
|
||
|
* @param excludeLevel level of log message to exclude (together with prefix)
|
||
|
* @param prefix prefix of log message to exclude (together with log level)
|
||
|
* @param out object representing console output
|
||
|
*/
|
||
|
private final class CustomAppender(excludeLevel: sbt.Level.Value, prefix: String, out: ConsoleOut)
|
||
|
extends ConsoleAppender("out", Properties.from(out, Terminal.isAnsiSupported, Terminal.isAnsiSupported), noSuppressedMessage) {
|
||
|
override def appendLog(level: sbt.Level.Value, message: => String): Unit = {
|
||
|
if (excludeLevel != level || !message.startsWith(prefix)) {
|
||
|
super.appendLog(level, message)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|