Skip to content

Commit

Permalink
fix: Allow registering custom logger handlers (#1156)
Browse files Browse the repository at this point in the history
  • Loading branch information
antusus committed Mar 20, 2023
1 parent be3820d commit 7373d5c
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 0 deletions.
20 changes: 20 additions & 0 deletions src/main/java/com/box/sdk/BoxLogger.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import static java.util.logging.Level.SEVERE;
import static java.util.logging.Level.WARNING;

import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.Logger;

Expand Down Expand Up @@ -146,4 +147,23 @@ public void turnLoggingOff() {
public void setUseParentHandlers(boolean useParentHandlers) {
this.logger.setUseParentHandlers(useParentHandlers);
}

/**
* Adds handler to logger.
* Check {@link Logger#addHandler(Handler)}
* @param handler a logging handler to add.
*/
public void addHandler(Handler handler) {
logger.addHandler(handler);
}

/**
* Removes handler from logger.
* Will not fail if handler is null or not registered.
* Check {@link Logger#removeHandler(Handler)}
* @param handler a logging handler to remove.
*/
public void removeHandler(Handler handler) {
logger.removeHandler(handler);
}
}
54 changes: 54 additions & 0 deletions src/test/java/com/box/sdk/BoxLoggerTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package com.box.sdk;

import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.empty;

import java.util.ArrayList;
import java.util.List;
import java.util.logging.Handler;
import java.util.logging.LogRecord;
import org.junit.Test;

public class BoxLoggerTest {
@Test
public void canAddHandler() {
HandlerForTests handler = new HandlerForTests();
BoxLogger boxLogger = BoxLogger.defaultLogger();

boxLogger.addHandler(handler);
boxLogger.info("Test");

LogRecord logRecord = handler.logEntries.get(0);
assertThat(logRecord.getMessage(), is("Test"));
}

@Test
public void canRemoveHandler() {
HandlerForTests handler = new HandlerForTests();
BoxLogger boxLogger = BoxLogger.defaultLogger();

boxLogger.addHandler(handler);
boxLogger.removeHandler(handler);
boxLogger.info("Test");

assertThat(handler.logEntries, empty());
}

private static final class HandlerForTests extends Handler {
List<LogRecord> logEntries = new ArrayList<>();

@Override
public void publish(LogRecord record) {
logEntries.add(record);
}

@Override
public void flush() {
}

@Override
public void close() throws SecurityException {
}
}
}

0 comments on commit 7373d5c

Please sign in to comment.