Those characters define colors the console should use to display the text (e.g. info in cyan and errors in red).
To remove the characters from your file, you can change the logging configuration, for example replace %coloredLevel
with %level
in conf/logger.xml.
Alternatively, you could implement a custom LogManager
to rewrite logs as needed. This is inspired by similar emojiLogs, but I did not test it:
logManager ~= { lm =>
new LogManager {
def apply(
data: sbt.Settings[Scope],
state: State,
task: Def.ScopedKey[_],
writer: java.io.PrintWriter
) = {
val l = lm.apply(data, state, task, writer)
new Logger {
val Escapes = Set("M\\\\[2K", "\\[0m", "\\[32m")
def ommitColorChars(str: String) = Escapes.fold(str)(_.replaceAll(_))
def log(level: Level.Value, message: => String) =
l.log(level, ommitColorChars(message))
def success(message: => String) = l.success(message)
def trace(t: => Throwable) = l.trace(t)
override def ansiCodesSupported = l.ansiCodesSupported
}
}
}
}