1111
1212/**
1313 * A simple {@link Runnable}/{@link Callable} that forwards all text from a
14- * {@link BufferedReader} to a {@link Logger}. This is done line by line.
14+ * {@link BufferedReader} to a {@link Logger}, line by line. The default logging
15+ * level is {@linkplain Logger#info(String) INFO}.
1516 *
1617 * @author Michael Faes
1718 */
@@ -20,6 +21,9 @@ public class LineLogger implements Runnable, Callable<Void> {
2021 private final BufferedReader reader ;
2122 private final Logger logger ;
2223
24+ private String prefix = "" ;
25+ private LogLevel logLevel = LogLevel .INFO ;
26+
2327 /**
2428 * Convenience constructor. The given {@link InputStream} is wrapped in an
2529 * {@link InputStreamReader} (with the default charset) and in a
@@ -52,6 +56,24 @@ public LineLogger(final BufferedReader reader, final Logger logger) {
5256 this .logger = logger ;
5357 }
5458
59+ public void setPrefix (String prefix ) {
60+ if (prefix == null )
61+ throw new IllegalArgumentException ("null" );
62+ this .prefix = prefix ;
63+ }
64+
65+ public String getPrefix () {
66+ return prefix ;
67+ }
68+
69+ public void setLogLevel (LogLevel logLevel ) {
70+ this .logLevel = logLevel ;
71+ }
72+
73+ public LogLevel getLogLevel () {
74+ return logLevel ;
75+ }
76+
5577 /**
5678 * Does the forwarding.
5779 *
@@ -71,8 +93,36 @@ public void run() {
7193 */
7294 public Void call () throws IOException {
7395 String line ;
74- while ((line = reader .readLine ()) != null )
75- logger .info (line );
96+ switch (logLevel ) {
97+ case TRACE :
98+ while ((line = reader .readLine ()) != null )
99+ logger .trace (prefix + line );
100+ break ;
101+ case DEBUG :
102+ while ((line = reader .readLine ()) != null )
103+ logger .debug (prefix + line );
104+ break ;
105+ case INFO :
106+ while ((line = reader .readLine ()) != null )
107+ logger .info (prefix + line );
108+ break ;
109+ case WARN :
110+ while ((line = reader .readLine ()) != null )
111+ logger .warn (prefix + line );
112+ break ;
113+ case ERROR :
114+ while ((line = reader .readLine ()) != null )
115+ logger .error (prefix + line );
116+ break ;
117+ }
76118 return null ;
77119 }
120+
121+ public enum LogLevel {
122+ TRACE ,
123+ DEBUG ,
124+ INFO ,
125+ WARN ,
126+ ERROR ;
127+ }
78128}
0 commit comments