Hrm. I see your point here. Even so, I'd like to avoid having an add'l goroutine for each LogfileInput just for this message passing; it makes more to noise to sift through when trying to extract signal from a dump of hekad stack traces, for no clear benefit. How about we add a `Log(msg string, isErr bool)` method to the LogfileInput? Then we pass the input to the FileMonitor and the monitor always uses the Log method.

Inside the Log method we can check to see if we have an InputRunner yet. If yes, we call ir.LogError() or ir.LogMessage() right away. If no, then we store the messages (maybe in a channel, although even just a slice is probably good enough). When `Run()` is called (i.e. when we are first handed our InputRunner) we can iterate through the slice and output all of the messages. This would eliminate the need for a long running goroutine, and should also mean we can get rid of the FileMonitorMessage struct.