66
77import org .jetbrains .annotations .Nullable ;
88
9+ import java .io .ByteArrayOutputStream ;
10+ import java .io .PrintStream ;
911import java .util .function .Consumer ;
1012
1113/**
@@ -39,6 +41,12 @@ static void setGlobal(SimpleLogger logger) {
3941
4042 void log (Level level , String message );
4143
44+ default void log (Level level , Consumer <? super PrintStream > message ) {
45+ ByteArrayOutputStream os = new ByteArrayOutputStream ();
46+ message .accept (new PrintStream (os ));
47+ this .log (level , os .toString ());
48+ }
49+
4250 enum Level {
4351 TRACE , DEBUG , QUIET , INFO , WARN , ERROR , FATAL
4452 }
@@ -47,30 +55,58 @@ default void trace(String message) {
4755 log (Level .TRACE , message );
4856 }
4957
58+ default void trace (Consumer <? super PrintStream > message ) {
59+ log (Level .TRACE , message );
60+ }
61+
5062 default void debug (String message ) {
5163 log (Level .DEBUG , message );
5264 }
5365
66+ default void debug (Consumer <? super PrintStream > message ) {
67+ log (Level .DEBUG , message );
68+ }
69+
5470 default void quiet (String message ) {
5571 log (Level .QUIET , message );
5672 }
5773
74+ default void quiet (Consumer <? super PrintStream > message ) {
75+ log (Level .QUIET , message );
76+ }
77+
5878 default void info (String message ) {
5979 log (Level .INFO , message );
6080 }
6181
82+ default void info (Consumer <? super PrintStream > message ) {
83+ log (Level .INFO , message );
84+ }
85+
6286 default void warn (String message ) {
6387 log (Level .WARN , message );
6488 }
6589
90+ default void warn (Consumer <? super PrintStream > message ) {
91+ log (Level .WARN , message );
92+ }
93+
6694 default void error (String message ) {
6795 log (Level .ERROR , message );
6896 }
6997
98+ default void error (Consumer <? super PrintStream > message ) {
99+ log (Level .ERROR , message );
100+ }
101+
70102 default void fatal (String message ) {
71103 log (Level .FATAL , message );
72104 }
73105
106+ default void fatal (Consumer <? super PrintStream > message ) {
107+ log (Level .FATAL , message );
108+ }
109+
74110 abstract class Consuming implements SimpleLogger {
75111 private byte indent ;
76112
0 commit comments