39
39
40
40
public class I18NAwareMessageConsumer implements MessageConsumer {
41
41
42
- private final PrintStream ps ;
42
+ private final PrintStream out ;
43
+ private final PrintStream err ;
43
44
private final MessageConsumer parent ;
44
45
private final ExternalProcessOutputParser parser ;
45
46
46
- public I18NAwareMessageConsumer (PrintStream ps ) {
47
- this (ps , null );
47
+ public I18NAwareMessageConsumer (PrintStream out ) {
48
+ this (out , out , null );
48
49
}
49
50
50
- public I18NAwareMessageConsumer (PrintStream ps , MessageConsumer parent ) {
51
- this .ps = ps ;
51
+ public I18NAwareMessageConsumer (PrintStream out , MessageConsumer parent ) {
52
+ this (out , out , parent );
53
+ }
54
+
55
+ public I18NAwareMessageConsumer (PrintStream out , PrintStream err ) {
56
+ this (out , err , null );
57
+ }
58
+
59
+ public I18NAwareMessageConsumer (PrintStream out , PrintStream err , MessageConsumer parent ) {
60
+ this .out = out ;
61
+ this .err = err ;
52
62
this .parent = parent ;
53
63
this .parser = new ExternalProcessOutputParser ();
54
64
}
@@ -57,14 +67,19 @@ public I18NAwareMessageConsumer(PrintStream ps, MessageConsumer parent) {
57
67
public void message (String s ) {
58
68
if (s .startsWith ("===" )) {
59
69
Map <String , Object > parsedMessage = parser .parse (s );
60
- ps .println (I18n .format (tr ((String ) parsedMessage .get ("msg" )), (Object []) parsedMessage .get ("args" )));
70
+ String translatedMessage = I18n .format (tr ((String ) parsedMessage .get ("msg" )), (Object []) parsedMessage .get ("args" ));
71
+ if (!parsedMessage .containsKey ("level" ) || "" .equals (parsedMessage .get ("level" )) || "info" .equals (parsedMessage .get ("level" ))) {
72
+ out .println (translatedMessage );
73
+ } else {
74
+ err .println (translatedMessage );
75
+ }
61
76
return ;
62
77
}
63
78
64
79
if (parent != null ) {
65
80
parent .message (s );
66
81
} else {
67
- ps .println (s );
82
+ out .println (s );
68
83
}
69
84
}
70
85
}
0 commit comments