Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.internetitem.logback.elasticsearch;
  
 
 import java.util.List;
 
 public class ElasticsearchPublisher implements Runnable {
 
 	public static final String THREAD_NAME = "es-writer";
 
 	private volatile List<ILoggingEventevents;
 
 	private String indexString;
 	private JsonFactory jf;
 
 	private Settings settings;
 
 	private final Object lock;
 
 
 	private volatile boolean working;
 
 
 	public ElasticsearchPublisher(Context contextErrorReporter errorReporterSettings settingsElasticsearchProperties propertiesthrows IOException {
 		this. = errorReporter;
 		this. = new ArrayList<ILoggingEvent>();
 		this. = new Object();
 		this. = settings;
 
 		this. = configureOutputAggregator(settingserrorReporter);
 
 		this. = new JsonFactory();
 
 		this. = generateIndexString(settings.getIndex(), settings.getType());
 		this. = generatePropertyList(contextproperties);
 	}
 
 	private static ElasticsearchOutputAggregator configureOutputAggregator(Settings settingsErrorReporter errorReporter)  {
 		ElasticsearchOutputAggregator spigot = new ElasticsearchOutputAggregator(settingserrorReporter);
 
 		if (settings.isLogsToStderr()) {
 			spigot.addWriter(new StdErrWriter());
 		}
 
 		if (settings.getLoggerName() != null) {
 			spigot.addWriter(new LoggerWriter(settings.getLoggerName()));
 		}
 
 		if (settings.getUrl() != null) {
 			spigot.addWriter(new ElasticsearchWriter(errorReportersettings));
 		}
 
 		return spigot;
 	}
 
 	private static List<PropertyAndEncodergeneratePropertyList(Context contextElasticsearchProperties properties) {
 		if (properties != null) {
 			for (Property property : properties.getProperties()) {
 				list.add(new PropertyAndEncoder(propertycontext));
 			}
 		}
 		return list;
 	}
 
 
 	private static String generateIndexString(JsonFactory jfString indexString typethrows IOException {
 		StringWriter writer = new StringWriter();
 		JsonGenerator gen = jf.createGenerator(writer);
 		gen.writeObjectFieldStart("index");
 		gen.writeObjectField("_index"index);
 		if (type != null) {
 			gen.writeObjectField("_type"type);
 		}
		gen.writeRaw('\n');
		gen.close();
		return writer.toString();
	}
	public void addEvent(ILoggingEvent event) {
			return;
		}
		synchronized () {
			.add(event);
			if (!) {
				 = true;
				Thread thread = new Thread(this);
				thread.start();
			}
		}
	}
	public void run() {
		int currentTry = 1;
		int maxRetries = .getMaxRetries();
		while (true) {
			try {
				List<ILoggingEventeventsCopy = null;
				synchronized () {
					if (!.isEmpty()) {
						eventsCopy = ;
						currentTry = 1;
					}
					if (eventsCopy == null) {
							// all done
							 = false;
							return;
else {
							// Nothing new, must be a retry
							if (currentTry > maxRetries) {
								// Oh well, better luck next time
								 = false;
								return;
							}
						}
					}
				}
				if (eventsCopy != null) {
				}
					currentTry++;
				}
catch (Exception e) {
				.logError("Internal error handling log data: " + e.getMessage(), e);
				currentTry++;
			}
		}
	}
	private static void serializeEvents(JsonGenerator genString indexStringList<ILoggingEventeventsCopyList<PropertyAndEncoderpropertyListthrows IOException {
		for (ILoggingEvent event : eventsCopy) {
			gen.writeRaw(indexString);
			serializeEvent(geneventpropertyList);
			gen.writeRaw('\n');
		}
		gen.flush();
	}
	private static void serializeEvent(JsonGenerator genILoggingEvent eventList<PropertyAndEncoderpropertyListthrows IOException {
		gen.writeObjectField("@timestamp"getTimestamp(event.getTimeStamp()));
		gen.writeObjectField("message"event.getMessage());
		for (PropertyAndEncoder pae : propertyList) {
			String value = pae.encode(event);
			if (pae.allowEmpty() || (value != null && !value.isEmpty())) {
				gen.writeObjectField(pae.getName(), value);
			}
		}
	}
	private static String getTimestamp(long timestamp) {
		Calendar cal = Calendar.getInstance();
		cal.setTimeInMillis(timestamp);
		return DatatypeConverter.printDateTime(cal);
	}
New to GrepCode? Check out our FAQ X