File tree Expand file tree Collapse file tree 2 files changed +35
-3
lines changed
main/java/org/scijava/log
test/java/org/scijava/log Expand file tree Collapse file tree 2 files changed +35
-3
lines changed Original file line number Diff line number Diff line change 3333package org .scijava .log ;
3434
3535import java .io .PrintStream ;
36+ import java .util .function .Function ;
3637
3738import org .scijava .Priority ;
3839import org .scijava .plugin .Plugin ;
5253@ Plugin (type = Service .class , priority = Priority .LOW )
5354public class StderrLogService extends AbstractLogService {
5455
56+ private Function <Integer , PrintStream > levelToStream =
57+ level -> (level <= LogLevel .WARN ) ? System .err : System .out ;
58+
59+ public void setPrintStreams (Function <Integer , PrintStream > levelToStream ) {
60+ this .levelToStream = levelToStream ;
61+ }
62+
5563 @ Override
56- public void notifyListeners (final LogMessage message ) {
57- final PrintStream out = (message .level () <= LogLevel .WARN ) ? System .err
58- : System .out ;
64+ public void notifyListeners (LogMessage message ) {
65+ final PrintStream out = levelToStream .apply (message .level ());
5966 out .print (message );
6067 }
6168}
Original file line number Diff line number Diff line change 3535import static org .junit .Assert .assertTrue ;
3636import static org .scijava .log .LogLevel .WARN ;
3737
38+ import java .io .ByteArrayOutputStream ;
39+ import java .io .PrintStream ;
40+
3841import org .junit .Test ;
3942
4043/**
4144 * Tests {@link StderrLogService}.
4245 *
4346 * @author Johannes Schindelin
47+ * @author Matthias Arzt
4448 */
4549public class StderrLogServiceTest {
50+
4651 @ Test
4752 public void testDefaultLevel () {
4853 final LogService log = new StderrLogService ();
4954 int level = log .getLevel ();
5055 assertTrue ("default level (" + level + //
5156 ") is at least INFO(" + WARN + ")" , level >= WARN );
5257 }
58+
59+ @ Test
60+ public void testOutputToStream () {
61+ // setup
62+ final StderrLogService logService = new StderrLogService ();
63+ final ByteArrayOutputStream outputStream = new ByteArrayOutputStream ();
64+ final PrintStream p = new PrintStream (outputStream );
65+ logService .setPrintStreams (ignore -> p );
66+
67+ final String text1 = "Hello World!" ;
68+ final String text2 = "foo bar" ;
69+
70+ // process
71+ logService .warn (text1 );
72+ logService .subLogger ("sub" ).error (text2 );
73+
74+ // test
75+ assertTrue (outputStream .toString ().contains (text1 ));
76+ assertTrue (outputStream .toString ().contains (text2 ));
77+ }
5378}
You can’t perform that action at this time.
0 commit comments