Skip to content

Commit ac05b2f

Browse files
maarztctrueden
authored andcommitted
Logger: extend Listenable interface
1 parent a07472c commit ac05b2f

File tree

5 files changed

+22
-19
lines changed

5 files changed

+22
-19
lines changed

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

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,6 @@ public AbstractLogService(final Properties properties) {
7272
LogService.LOG_LEVEL_PROPERTY + ":");
7373
}
7474

75-
// -- AbstractLogService methods --
76-
77-
abstract void notifyListeners(LogMessage message);
78-
7975
// -- Logger methods --
8076

8177
@Override
@@ -100,6 +96,8 @@ public void alwaysLog(final int level, final Object msg, final Throwable t) {
10096
rootLogger.alwaysLog(level, msg, t);
10197
}
10298

99+
// -- Listenable methods --
100+
103101
@Override
104102
public void addListener(final LogListener listener) {
105103
rootLogger.addListener(listener);
@@ -110,6 +108,11 @@ public void removeListener(final LogListener listener) {
110108
rootLogger.removeListener(listener);
111109
}
112110

111+
@Override
112+
public void notifyListeners(final LogMessage event) {
113+
rootLogger.notifyListeners(event);
114+
}
115+
113116
// -- Deprecated --
114117

115118
/** @deprecated Use {@link LogLevel#prefix(int)} instead. */

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

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
* Default implementation of {@link Logger}.
3939
*
4040
* @author Matthias Arzt
41+
* @author Curtis Rueden
4142
*/
4243
@IgnoreAsCallingClass
4344
public class DefaultLogger implements Logger {
@@ -54,8 +55,7 @@ public DefaultLogger(final int level)
5455
// -- DefaultLogger methods --
5556

5657
protected void messageLogged(final LogMessage message) {
57-
for (LogListener listener : listeners)
58-
listener.messageLogged(message);
58+
notifyListeners(message);
5959
}
6060

6161
// -- Logger methods --
@@ -70,6 +70,8 @@ public void alwaysLog(final int level, final Object msg, final Throwable t) {
7070
messageLogged(new LogMessage(level, msg, t));
7171
}
7272

73+
// -- Listenable methods --
74+
7375
@Override
7476
public void addListener(final LogListener listener) {
7577
listeners.add(listener);
@@ -79,4 +81,10 @@ public void addListener(final LogListener listener) {
7981
public void removeListener(final LogListener listener) {
8082
listeners.remove(listener);
8183
}
84+
85+
@Override
86+
public void notifyListeners(final LogMessage message) {
87+
for (LogListener listener : listeners)
88+
listener.messageLogged(message);
89+
}
8290
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
* Callback function used by {@link Logger}.
3636
*
3737
* @author Matthias Arzt
38+
* @see Logger
3839
* @see LogMessage
3940
*/
4041
public interface LogListener {

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

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
import static org.scijava.log.LogLevel.TRACE;
3838
import static org.scijava.log.LogLevel.WARN;
3939

40+
import org.scijava.Listenable;
41+
4042
/**
4143
* Interface for objects which can produce log messages.
4244
* <p>
@@ -49,7 +51,7 @@
4951
* @see LogService
5052
*/
5153
@IgnoreAsCallingClass
52-
public interface Logger {
54+
public interface Logger extends Listenable<LogListener, LogMessage> {
5355

5456
default void debug(final Object msg) {
5557
log(DEBUG, msg);
@@ -184,15 +186,4 @@ default void log(final int level, final Object msg, final Throwable t) {
184186

185187
/** Returns the log level of this logger. see {@link LogLevel} */
186188
int getLevel();
187-
188-
/**
189-
* {@link LogListener}s added with this method are notified of every message,
190-
* NB: Messages are only logged, if their level is lower than the logger's
191-
* level.
192-
*
193-
* @param listener
194-
*/
195-
void addListener(LogListener listener);
196-
197-
void removeListener(LogListener listener);
198189
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ public Throwable exception() {
219219
}
220220

221221
@Override
222-
void notifyListeners(LogMessage message) {
222+
public void notifyListeners(LogMessage message) {
223223
this.message = message.toString();
224224
this.exception = message.throwable();
225225
}

0 commit comments

Comments
 (0)