This is an sbt plugin that writes the stdout of sbt run to a file.
Of course you could just do
$ sbt run > output.log
but then you get the sbt logging version of your process's output, complete with a noisy ANSI-coloured [info] header on every line. There's no easy way to get hold of the raw output of the process.
Add the following to your project/plugins.sbt to add the plugin:
resolvers += Resolver.bintrayIvyRepo("cb372", "sbt-plugins")
addSbtPlugin("cb372" % "sbt-write-output-to-file" % "0.2")
This version will work for both sbt 0.13.x and 1.x.
Then add a line to your build.sbt to enable it:
enablePlugins(WriteOutputToFile)
Now when you execute run, the output will be written to a text file instead of being logged to the console.
There are a few keys available for configuring the plugin:
// Where to save the process's output, defaults to "output.log"
writeOutputToFile_outputFile := file("stdout.txt")
// Whether to append to the file every time the process to runs, defaults to false (i.e. overwrite the file)
writeOutputToFile_append := true
The fork flag must be set to true in order to collect the process's output. The plugin sets it to true automatically, but if you override it and set it back to false then the plugin will not work.
stderr will not be written to the file. It will show up in the console as usual.