```java
public class SubstituteLogger implements Logger {
…………………………
public SubstituteLogger(String name, List<SubstituteLoggingEvent> eventList) {
this.name = name;
this.eventList = eventList;
}
public void debug(String msg) {
delegate().debug(msg);
}
…………………………
/**
* Return the delegate logger instance if set. Otherwise, return a {@link NOPLogger}
* instance.
*/
Logger delegate() {
return _delegate != null ? _delegate : getEventRecordingLogger();
}
private Logger getEventRecordingLogger() {
if (eventRecodingLogger == null) {
eventRecodingLogger = new EventRecodingLogger(this, eventList);
}
return eventRecodingLogger;
}
/**
* Typically called after the {@link org.slf4j.LoggerFactory} initialization phase is completed.
* @param delegate
*/
{color:red} public void setDelegate(Logger delegate) {
this._delegate = delegate;
}{color}
public boolean isDelegateEventAware() {
if (delegateEventAware != null)
return delegateEventAware;
try {
logMethodCache = _delegate.getClass().getMethod("log", LoggingEvent.class);
delegateEventAware = Boolean.TRUE;
} catch (NoSuchMethodException e) {
delegateEventAware = Boolean.FALSE;
}
return delegateEventAware;
}
}