io.tracee.contextlogger.TraceeContextLogger Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of contextlogger-core Show documentation
Show all versions of contextlogger-core Show documentation
Please refer to https://github.com/tracee/contextlogger.
package io.tracee.contextlogger;
import io.tracee.contextlogger.api.ConfigBuilder;
import io.tracee.contextlogger.api.ContextLogger;
import io.tracee.contextlogger.api.TraceeContextStringRepresentationBuilder;
import io.tracee.contextlogger.connector.ConnectorOutputProvider;
import io.tracee.contextlogger.connector.LogConnectorOutputProvider;
import io.tracee.contextlogger.impl.ConfigBuilderImpl;
import io.tracee.contextlogger.impl.ContextLoggerConfiguration;
/**
* The main context logger class.
* This class is used to generate context information
*
* Created by Tobias Gindler, holisticon AG on 14.03.14.
*/
public final class TraceeContextLogger extends AbstractToStringBuilder implements LogConnectorOutputProvider {
private ConnectorFactory connectorsWrapper;
private String prefix;
private Class[] excludedTypes;
private TraceeContextLogger(ContextLoggerConfiguration contextLoggerConfiguration) {
super(contextLoggerConfiguration);
initConnectors();
}
private TraceeContextLogger(TraceeContextLogger instanceToClone) {
super(instanceToClone);
this.connectorsWrapper = instanceToClone.connectorsWrapper;
this.prefix = instanceToClone.prefix;
this.excludedTypes = instanceToClone.excludedTypes;
}
/**
* Initializes all available connectors.
*/
private void initConnectors() {
connectorsWrapper = new ConnectorFactory();
}
public static ConfigBuilder create() {
TraceeContextLogger contextLoggerInstance = new TraceeContextLogger(ContextLoggerConfiguration.getOrCreateContextLoggerConfiguration());
return new ConfigBuilderImpl(contextLoggerInstance);
}
public static ContextLogger createDefault() {
return create().apply();
}
@Override
public void log(Object... instancesToLog) {
this.logWithPrefixedMessage(null, instancesToLog);
}
@Override
public void logWithPrefixedMessage(String prefixedMessage, Object... instancesToLog) {
this.prefix = prefixedMessage;
this.objectsToProcess = instancesToLog;
this.connectorsWrapper.sendErrorReportToConnectors(this);
}
@Override
public ConnectorOutputProvider excludeContextProviders(final Class... contextProvidersToInclude) {
TraceeContextLogger traceeContextLogger = new TraceeContextLogger(this);
traceeContextLogger.excludedTypes = contextProvidersToInclude;
TraceeContextStringRepresentationBuilder traceeContextStringRepresentationBuilder = traceeContextLogBuilder.cloneStringRepresentationBuilder();
for (Class type : contextProvidersToInclude) {
if (type != null) {
traceeContextStringRepresentationBuilder.getManualContextOverrides().put(type.getCanonicalName(), Boolean.FALSE);
}
}
traceeContextLogger.setStringRepresentationBuilder(traceeContextStringRepresentationBuilder);
return traceeContextLogger;
}
@Override
public String provideOutput() {
return traceeContextLogBuilder.createStringRepresentation(objectsToProcess);
}
@Override
public String getPrefix() {
return prefix;
}
boolean isInstanceTypeExcluded(Object contextProviderType) {
if (excludedTypes != null && contextProviderType != null) {
for (Class type : excludedTypes) {
if (type.isAssignableFrom(contextProviderType.getClass())) {
return true;
}
}
}
return false;
}
}