Skip to content

Commit 7373d5c

Browse files
authored
fix: Allow registering custom logger handlers (#1156)
1 parent be3820d commit 7373d5c

2 files changed

Lines changed: 74 additions & 0 deletions

File tree

src/main/java/com/box/sdk/BoxLogger.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import static java.util.logging.Level.SEVERE;
88
import static java.util.logging.Level.WARNING;
99

10+
import java.util.logging.Handler;
1011
import java.util.logging.Level;
1112
import java.util.logging.Logger;
1213

@@ -146,4 +147,23 @@ public void turnLoggingOff() {
146147
public void setUseParentHandlers(boolean useParentHandlers) {
147148
this.logger.setUseParentHandlers(useParentHandlers);
148149
}
150+
151+
/**
152+
* Adds handler to logger.
153+
* Check {@link Logger#addHandler(Handler)}
154+
* @param handler a logging handler to add.
155+
*/
156+
public void addHandler(Handler handler) {
157+
logger.addHandler(handler);
158+
}
159+
160+
/**
161+
* Removes handler from logger.
162+
* Will not fail if handler is null or not registered.
163+
* Check {@link Logger#removeHandler(Handler)}
164+
* @param handler a logging handler to remove.
165+
*/
166+
public void removeHandler(Handler handler) {
167+
logger.removeHandler(handler);
168+
}
149169
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package com.box.sdk;
2+
3+
import static org.hamcrest.CoreMatchers.is;
4+
import static org.hamcrest.MatcherAssert.assertThat;
5+
import static org.hamcrest.Matchers.empty;
6+
7+
import java.util.ArrayList;
8+
import java.util.List;
9+
import java.util.logging.Handler;
10+
import java.util.logging.LogRecord;
11+
import org.junit.Test;
12+
13+
public class BoxLoggerTest {
14+
@Test
15+
public void canAddHandler() {
16+
HandlerForTests handler = new HandlerForTests();
17+
BoxLogger boxLogger = BoxLogger.defaultLogger();
18+
19+
boxLogger.addHandler(handler);
20+
boxLogger.info("Test");
21+
22+
LogRecord logRecord = handler.logEntries.get(0);
23+
assertThat(logRecord.getMessage(), is("Test"));
24+
}
25+
26+
@Test
27+
public void canRemoveHandler() {
28+
HandlerForTests handler = new HandlerForTests();
29+
BoxLogger boxLogger = BoxLogger.defaultLogger();
30+
31+
boxLogger.addHandler(handler);
32+
boxLogger.removeHandler(handler);
33+
boxLogger.info("Test");
34+
35+
assertThat(handler.logEntries, empty());
36+
}
37+
38+
private static final class HandlerForTests extends Handler {
39+
List<LogRecord> logEntries = new ArrayList<>();
40+
41+
@Override
42+
public void publish(LogRecord record) {
43+
logEntries.add(record);
44+
}
45+
46+
@Override
47+
public void flush() {
48+
}
49+
50+
@Override
51+
public void close() throws SecurityException {
52+
}
53+
}
54+
}

0 commit comments

Comments
 (0)