eAppender) {
return aai.detachAppender(eAppender);
}
public boolean detachAppender(String name) {
return aai.detachAppender(name);
}
}
================================================
FILE: logback-core/src/main/java/com/tersesystems/logback/core/Component.java
================================================
/*
* SPDX-License-Identifier: CC0-1.0
*
* Copyright 2018-2020 Will Sargent.
*
* Licensed under the CC0 Public Domain Dedication;
* You may obtain a copy of the License at
*
* http://creativecommons.org/publicdomain/zero/1.0/
*/
package com.tersesystems.logback.core;
/** A marker interface to let the caller know this can be placed in a ContainerComponent. */
public interface Component {}
================================================
FILE: logback-core/src/main/java/com/tersesystems/logback/core/ComponentContainer.java
================================================
/*
* SPDX-License-Identifier: CC0-1.0
*
* Copyright 2018-2020 Will Sargent.
*
* Licensed under the CC0 Public Domain Dedication;
* You may obtain a copy of the License at
*
* http://creativecommons.org/publicdomain/zero/1.0/
*/
package com.tersesystems.logback.core;
/**
* A component container.
*
* Entries are encouraged but not required to extend Component.
*/
public interface ComponentContainer {
void putComponent(Class type, T instance);
T getComponent(Class type);
boolean hasComponent(Class type);
}
================================================
FILE: logback-core/src/main/java/com/tersesystems/logback/core/CompositeAppender.java
================================================
/*
* SPDX-License-Identifier: CC0-1.0
*
* Copyright 2018-2020 Will Sargent.
*
* Licensed under the CC0 Public Domain Dedication;
* You may obtain a copy of the License at
*
* http://creativecommons.org/publicdomain/zero/1.0/
*/
package com.tersesystems.logback.core;
import ch.qos.logback.core.Appender;
import ch.qos.logback.core.UnsynchronizedAppenderBase;
import ch.qos.logback.core.spi.AppenderAttachable;
import ch.qos.logback.core.spi.AppenderAttachableImpl;
import java.util.Iterator;
/**
* This appender creates a composite of the underlying appenders but does not add or change any
* functionality of those appenders.
*
* It is very useful for referring to a list of appenders by a single name.
*
* @param the event type, usually ILoggingEvent.
*/
public class CompositeAppender extends UnsynchronizedAppenderBase
implements AppenderAttachable {
protected AppenderAttachableImpl aai = new AppenderAttachableImpl();
@Override
public void stop() {
if (isStarted()) {
detachAndStopAllAppenders();
}
super.stop();
}
@Override
protected void append(E eventObject) {
aai.appendLoopOnAppenders(eventObject);
}
public void addAppender(Appender newAppender) {
addInfo("Attaching appender named [" + newAppender.getName() + "] to " + this.toString());
aai.addAppender(newAppender);
}
public Iterator> iteratorForAppenders() {
return aai.iteratorForAppenders();
}
public Appender getAppender(String name) {
return aai.getAppender(name);
}
public boolean isAttached(Appender eAppender) {
return aai.isAttached(eAppender);
}
public void detachAndStopAllAppenders() {
aai.detachAndStopAllAppenders();
}
public boolean detachAppender(Appender eAppender) {
return aai.detachAppender(eAppender);
}
public boolean detachAppender(String name) {
return aai.detachAppender(name);
}
}
================================================
FILE: logback-core/src/main/java/com/tersesystems/logback/core/DecoratingAppender.java
================================================
/*
* SPDX-License-Identifier: CC0-1.0
*
* Copyright 2018-2020 Will Sargent.
*
* Licensed under the CC0 Public Domain Dedication;
* You may obtain a copy of the License at
*
* http://creativecommons.org/publicdomain/zero/1.0/
*/
package com.tersesystems.logback.core;
import ch.qos.logback.core.Appender;
import ch.qos.logback.core.UnsynchronizedAppenderBase;
import ch.qos.logback.core.spi.AppenderAttachable;
import ch.qos.logback.core.spi.AppenderAttachableImpl;
import java.util.Iterator;
/**
* Decorates an event with additional class, using {@code decorateEvent}, and makes it available to
* the appenders underneath it.
*
* @param