package org.infinispan.server.eventlogger;
import static org.infinispan.util.logging.events.Messages.MESSAGES;
import org.infinispan.util.logging.events.EventLogCategory;
import org.infinispan.util.logging.events.EventLogLevel;
import org.infinispan.util.logging.events.impl.DecoratedEventLogger;
/**
* DecoratedServerEventLogger. Provides a way to decorate an EventLog with additional information.
*
* @author Tristan Tarrant
* @since 8.2
*/
class DecoratedServerEventLogger extends DecoratedEventLogger {
private ServerEventLogger delegate;
DecoratedServerEventLogger(ServerEventLogger delegate) {
super(delegate);
this.delegate = delegate;
}
@Override
public void log(EventLogLevel level, EventLogCategory category, String message) {
StringBuilder sb = new StringBuilder();
context.ifPresent(c -> sb.append(MESSAGES.eventLogContext(c)));
scope.ifPresent(s -> sb.append(MESSAGES.eventLogContext(s)));
who.ifPresent(w -> sb.append(MESSAGES.eventLogWho(w)));
// We don't include detail in this implementation
sb.append(message);
delegate.textLog(level, category, sb.toString());
delegate.eventLog(new ServerEventImpl(level, category, delegate.getTimeService().instant(), message, detail, context, who, scope));
}
}