add Logger to Streams

This commit is contained in:
Mark Harrah 2010-09-04 08:45:34 -04:00
parent caa655ae06
commit 8f1768d6a8
2 changed files with 8 additions and 6 deletions

View File

@ -26,7 +26,7 @@ trait SingleProject extends Tasked with PrintTask with TaskExtra with Types
val context = ReflectiveContext(this, (x: SingleProject) => Some("project")) // TODO: project names
val dummies = new Transform.Dummies(In, State, Streams)
def name(t: Task[_]): String = context.staticName(t) getOrElse std.Streams.name(t)
val injected = new Transform.Injected( input, state, std.Streams(t => streamBase / name(t)) )
val injected = new Transform.Injected( input, state, std.Streams(t => streamBase / name(t), (t, writer) => ConsoleLogger() ) )
context.forName(input.name) map { t => (t.merge.map(_ => state), Transform(dummies, injected, context) ) }
}

View File

@ -29,8 +29,8 @@ sealed trait TaskStreams
def binary(sid: String = default): BufferedOutputStream
// default logger
/*val log: Logger
def log(sid: String): Logger*/
final lazy val log: Logger = log(default)
def log(sid: String): Logger
private[this] def getID(s: Option[String]) = s getOrElse default
}
@ -48,13 +48,13 @@ object Streams
{
private[this] val closeQuietly = (_: Closeable).close()
def multi[Owner](bases: Owner => File, taskOwner: Task[_] => Option[Owner]): Streams =
def multi[Owner](bases: Owner => File, taskOwner: Task[_] => Option[Owner], mkLogger: (Task[_], PrintWriter) => Logger): Streams =
{
val taskDirectory = (t: Task[_]) => taskOwner(t) map bases getOrElse error("Cannot get streams for task '" + name(t) + "' with no owner.")
apply(taskDirectory)
apply(taskDirectory, mkLogger)
}
def apply(taskDirectory: Task[_] => File): Streams = new Streams { streams =>
def apply(taskDirectory: Task[_] => File, mkLogger: (Task[_], PrintWriter) => Logger): Streams = new Streams { streams =>
def apply(a: Task[_], update: Boolean): ManagedTaskStreams = new ManagedTaskStreams {
private[this] var opened: List[Closeable] = Nil
@ -72,6 +72,8 @@ object Streams
def binary(sid: String = default): BufferedOutputStream =
make(a, sid)(f => new BufferedOutputStream(new FileOutputStream(f)))
def log(sid: String): Logger = mkLogger(a, text(sid))
def make[T <: Closeable](a: Task[_], sid: String)(f: File => T): T = synchronized {
checkOpen()
val file = taskDirectory(a) / sid