Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #25279 > unrolled thread

Re: Reading from stdout

Started bymarkspace <markspace@nospam.nospam>
First post2013-09-12 22:12 -0700
Last post2013-09-12 22:12 -0700
Articles 1 — 1 participant

Back to article view | Back to comp.lang.java.programmer

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: Reading from stdout markspace <markspace@nospam.nospam> - 2013-09-12 22:12 -0700

#25279 — Re: Reading from stdout

Frommarkspace <markspace@nospam.nospam>
Date2013-09-12 22:12 -0700
SubjectRe: Reading from stdout
Message-ID<l0u6s6$s4b$1@dont-email.me>
On 9/12/2013 9:59 AM, White Spirit wrote:
> I'm writing a unit test for a logger class that writes to stdout.  The
> logger class uses an OutputStreamWriter to wrap FileDescriptor.out:
>
>    mOut = new OutputStreamWriter(new
> FileOutputStream(FileDescriptor.out), "UTF-8");
>
> My unit test instantiates the logger class as a local object.  When I
> try to read from FileDescriptor.out in my unit test class, however,
> nothing is received:
>
>   BufferedReader reader = new BufferedReader( new InputStreamReader( new
> FileInputStream( FileDescriptor.out ) ) );
>   // do some logging
>   // ...
>   String n = reader.readLine();
>
> Is there any way of reading what the logger is outputting?


I've run into this problem before as well, and I concluded the same as 
Daniel:  All output should go to a plain vanilla OutputStream (or a 
Writer).  Then you just wrap where you really want the output to go in a 
plain stream of some sort, and you're set.

Anything else, and you're pretty much fooked.

I don't have any good suggestions for you, I'm sorry.  Other than 
refactor the whole thing to use regular logging logging instead.

So, why aren't use using the regular logging package?  Because there's 
standard loggers, StreamHandler or MemoryHandler, that would do what you 
want pretty easily, allowing you to inject a stream to intercept and 
test logging output.

[toc] | [standalone]


Back to top | Article view | comp.lang.java.programmer


csiph-web