All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.slf4j.event.DefaultLoggingEvent Maven / Gradle / Ivy

package org.slf4j.event;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.Marker;

/**
 * A default implementation of {@link LoggingEvent}.
 * 
 * @author Ceki Gülcü
 *
 * @since 2.0.0
 */
public class DefaultLoggingEvent implements LoggingEvent {

	Logger logger;
	Level level;

	String message;
	List markers;
	List arguments;
	List keyValuePairs;

	Throwable throwable;
	String threadName;
	long timeStamp;
	

	public DefaultLoggingEvent(Level level, Logger logger) {
		this.logger = logger;
		this.level = level;
	}

	public void addMarker(Marker marker) {
		getMarkers().add(marker);
	}

	@Override
	public List getMarkers() {
		if (markers == null) {
			markers = new ArrayList<>(5);
		}
		return markers;
	}

	public void addArgument(Object p) {
		getNonNullArguments().add(p);
	}

	public void addArguments(Object... args) {
		getNonNullArguments().addAll(Arrays.asList(args));
	}

	private List getNonNullArguments() {
		if (arguments == null) {
			arguments = new ArrayList<>(3);
		}
		return arguments;
	}

	@Override
	public List getArguments() {
		return arguments;
	}

	@Override
	public Object[] getArgumentArray() {
		if (arguments == null)
			return null;
		return arguments.toArray();
	}

	public void addKeyValue(String key, Object value) {
		getNonnullKeyValuePairs().add(new KeyValuePair(key, value));
	}

	private List getNonnullKeyValuePairs() {
		if (keyValuePairs == null) {
			keyValuePairs = new ArrayList<>(4);
		}
		return keyValuePairs;
	}

	@Override
	public List getKeyValuePairs() {
		return keyValuePairs;
	}

	public void setThrowable(Throwable cause) {
		this.throwable = cause;
	}

	@Override
	public Level getLevel() {
		return level;
	}

	@Override
	public String getLoggerName() {
		return logger.getName();
	}

	@Override
	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}

	
	@Override
	public Throwable getThrowable() {
		return throwable;
	}
	public String getThreadName() {
		return threadName;
	}

	public long getTimeStamp() {
		return timeStamp;
	}
}