Affects Version/s: 1.7.x
Fix Version/s: 1.7.23
We usually use SimpleLogger in tests, and some other binding when running in production.
In some cases, our tests depend on log values logged through the logger during a test.
Unfortunately between version 1.7.0 and 1.7.1 this ability has been removed, since the SimpleLogger now caches the system stream in a static initialiser.
Here is the code that broke this approach:
Basically, we would write a test:
PrintStream err = System.err;
PrintStream temp = new PrintStream(some buffer here);
System.err = temp;
// run tests
System.err = err;
// here we assert that the temp stream contains values we expect
Unfortunately SimpleLogger now caches the system stream and never releases it, meaning swapping the streams to catch the output is not possible.