Thanks, Steve. I'd never imagined that the solution is that complicated. Now I have something to digest for a couple of weeks :)
On Friday, July 4, 2014 11:32:13 AM UTC-6, Steven G. Johnson wrote: > > > > Nevertheless, the thread was started saying that evaluation of computer >> generated code was just one of the potential applications of capturing the >> console output. Logging Julia output to a file was another, and there are >> several more. >> >> Here we are after 40 posts in this thread and we still don't know, how to >> capture the Julia REPL output. >> > > Short answer: declare your own subtype MyTerminal <: > Base.Terminals.TextTerminal <: IO, implementing the abstract TextTerminal > interface in base/Terminals.jl but with a write(t::MyTerminal, x) method > that also writes x to a file or whatever it is that you want to do with it, > then set Base.active_repl.t to an instance of MyTerminal. > > For example, I put together a quick hack at > https://gist.github.com/stevengj/88502943fe0478933492 that allows you to > log the output of the REPL to a file. Just do > Base.active_repl.t = LoggingTerminal(Base.active_repl.t, > open("foo.out", "w")) > and the REPL output will be logged to "foo.out" (though you may need to > flush(Base.active_repl.t) to see it). > > However, the real answer is that hacking the REPL like this exposes a lot > of undocumented guts, and is ugly, and is probably not the way to do what > you want. > > * If you want to send commands from an external program to Julia and then > send the results back, the right thing is probably to implement your own > read-eval-print loop like in the example code I showed earlier. > -- If you want to do this while still being able to execute Julia > commands interactively in the REPL, you can run something like my example > code in a background task. > > * If you want logging of REPL output, and you don't just want to > copy-and-paste from your terminal into a text editor to save the output, > then probably you want a more full-featured environment like the IJulia > notebook. > > --SGJ > >
