Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import org.apache.logging.log4j.Level;
- import org.apache.logging.log4j.LogManager;
- import org.apache.logging.log4j.Marker;
- import org.apache.logging.log4j.core.Filter;
- import org.apache.logging.log4j.core.LogEvent;
- import org.apache.logging.log4j.core.Logger;
- import org.apache.logging.log4j.message.Message;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.regex.Pattern;
- /**
- * A simple dummy exception for shutting off comparators
- * @author ME1312
- */
- public class ComparatorTerminateException extends NullPointerException {
- /**
- * Throw this to shut off a comparator
- */
- public ComparatorTerminateException() {
- super("This exception was thrown so the comparator will turn off");
- DummyExceptionFilter.getFilter(this);
- }
- /**
- * Filters the Exception message from console
- */
- private static class DummyExceptionFilter implements Filter {
- private static DummyExceptionFilter instance = null;
- private ArrayList<Exception> search = new ArrayList<Exception>();
- private Logger logger;
- protected static DummyExceptionFilter getFilter(Exception e) {
- if (instance == null) instance = new DummyExceptionFilter();
- instance.add(e);
- return instance;
- }
- private DummyExceptionFilter() {
- (logger = (Logger) LogManager.getRootLogger()).addFilter(this);
- }
- private void add(Exception e) {
- search.add(e);
- }
- private void remove(Exception e) {
- search.remove(e);
- }
- @Override
- public Result filter(LogEvent event) {
- Result result = Result.NEUTRAL;
- if (event.getMessage().getFormattedMessage() != null && event.getMessage().getFormattedMessage().length() > 0) {
- List<Exception> search = new ArrayList<Exception>();
- search.addAll(this.search);
- for (Exception e : search) {
- String error = e.getClass().getCanonicalName();
- if (e.getMessage() != null && e.getMessage().length() > 0) error += ": " + e.getMessage();
- if (result != Result.DENY && !Pattern.compile(".*" + Pattern.quote(error) + ".*").matcher(event.getMessage().getFormattedMessage()).find()) {
- this.search.remove(e);
- result = Result.DENY;
- }
- }
- }
- return result;
- }
- @Override
- public Result getOnMismatch() {
- return Result.NEUTRAL;
- }
- @Override
- public Result getOnMatch() {
- return Result.NEUTRAL;
- }
- @Override
- public Result filter(Logger logger, Level level, Marker marker, String s, Object... objects) {
- return Result.NEUTRAL;
- }
- @Override
- public Result filter(Logger logger, Level level, Marker marker, Object o, Throwable throwable) {
- return Result.NEUTRAL;
- }
- @Override
- public Result filter(Logger logger, Level level, Marker marker, Message message, Throwable throwable) {
- return Result.NEUTRAL;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement