Skip to content

Commit 81cf086

Browse files
authored
Merge pull request #309 from maarzt/fix-logservice-listeners
Logging, shorten console output, fix listeners
2 parents 5c1f21e + a60d4c8 commit 81cf086

File tree

4 files changed

+20
-15
lines changed

4 files changed

+20
-15
lines changed

src/main/java/org/scijava/log/AbstractLogService.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,8 @@ public void setLevelForLogger(final String source, final int level) {
9090
rootLogger.getSource().subSource(source).setLogLevel(level);
9191
}
9292

93+
abstract protected void messageLogged(LogMessage message);
94+
9395
// -- Logger methods --
9496

9597
@Override
@@ -184,7 +186,7 @@ private Map<String, Integer> setupMapFromProperties(Properties properties,
184186
private class RootLogger extends DefaultLogger {
185187

186188
public RootLogger() {
187-
super(AbstractLogService.this::notifyListeners, LogSource.newRoot(),
189+
super(AbstractLogService.this::messageLogged, LogSource.newRoot(),
188190
LogLevel.NONE);
189191
}
190192

src/main/java/org/scijava/log/LogMessage.java

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -129,20 +129,12 @@ public void attach(Object value) {
129129

130130
@Override
131131
public String toString() {
132-
return format(this);
133-
}
134-
135-
// -- Utility methods --
136-
137-
public static String format(final LogMessage message) {
138132
final StringWriter sw = new StringWriter();
139133
final PrintWriter printer = new PrintWriter(sw);
140-
printer.print("[" + message.time() + "] ");
141-
printer.print("[" + LogLevel.prefix(message.level()) + "] ");
142-
printer.print("[" + message.source() + "] ");
143-
printer.println(message.text());
144-
if (message.throwable() != null) {
145-
message.throwable().printStackTrace(printer);
134+
printer.print("[" + LogLevel.prefix(level()) + "] ");
135+
printer.println(text());
136+
if (throwable() != null) {
137+
throwable().printStackTrace(printer);
146138
}
147139
return sw.toString();
148140
}

src/main/java/org/scijava/log/StderrLogService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public void setPrintStreams(Function<Integer, PrintStream> levelToStream) {
6161
}
6262

6363
@Override
64-
public void notifyListeners(LogMessage message) {
64+
protected void messageLogged(LogMessage message) {
6565
final PrintStream out = levelToStream.apply(message.level());
6666
out.print(message);
6767
}

src/test/java/org/scijava/log/LogServiceTest.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import org.junit.Test;
44

5+
import java.util.ArrayList;
6+
import java.util.List;
57
import java.util.Properties;
68
import java.util.function.BiConsumer;
79
import java.util.function.Function;
@@ -200,6 +202,15 @@ public void testListener() {
200202
listener.hasLogged(m -> msg2.equals(m.text()));
201203
}
202204

205+
@Test
206+
public void testLogListenerIsNotifiedOnce() {
207+
List<LogMessage> list = new ArrayList<>();
208+
LogService logService = new TestableLogService();
209+
logService.addLogListener(list::add);
210+
logService.error("dummy");
211+
assertEquals(1, list.size());
212+
}
213+
203214
// -- Helper classes --
204215

205216
private static class MyTestClass {
@@ -241,7 +252,7 @@ public Throwable exception() {
241252
}
242253

243254
@Override
244-
public void notifyListeners(LogMessage message) {
255+
protected void messageLogged(LogMessage message) {
245256
this.message = message.toString();
246257
this.exception = message.throwable();
247258
}

0 commit comments

Comments
 (0)