package org.jfrog.bamboo.util;
import com.google.common.collect.Lists;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.apache.log4j.Logger;
import java.util.List;
/**
* For Actions like promote and Push to Bintray where we have no BuildLog available
* This will handle all logs to screen
*
* @author Aviad Shikloshi
*/
public class ActionLog {
private static final String errorFormat = "<p style='color:red'>%s</p>";
private static final String messageFormat = "<p>%s</p>";
private List<String> logEntries;
private Logger log;
public ActionLog(){
this.log = Logger.getLogger(ActionLog.class);
this.logEntries = Lists.newArrayList();
}
public void setLogger(Logger log) {
this.log = log;
}
public List<String> getLogEntries() {
return logEntries;
}
public void clearLog(){
this.logEntries.clear();
}
public void logError(String message, Exception e) {
if (e != null) {
message += " " + e.getMessage() + " <br>";
logStackTrace(e);
}
log.error(message, e);
logEntries.add(String.format(errorFormat, message));
}
public void logError(String message) {
log.error(message);
logEntries.add(String.format(errorFormat, message));
}
public void logMessage(String message) {
log.info(message);
logEntries.add(String.format(messageFormat, message));
}
private void logStackTrace(Exception e) {
String stackTrace = ExceptionUtils.getStackTrace(e);
stackTrace = String.format(errorFormat, stackTrace);
logEntries.add(stackTrace);
}
}