
com.slickqa.jupiter.SlickResultLogger Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of slickqa-junit-jupiter Show documentation
Show all versions of slickqa-junit-jupiter Show documentation
Junit Jupiter extension that reports results to slick
package com.slickqa.jupiter;
import com.slickqa.client.errors.SlickError;
import com.slickqa.client.model.LogEntry;
import com.slickqa.client.model.Result;
import com.slickqa.jupiter.annotations.SlickLogger;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Date;
/**
* Implementation of SlickLogger interface.
*/
public class SlickResultLogger implements SlickLogger {
public static int BUFFER_SIZE = 10;
public static int MAX_SECONDS_SINCE_FIRST_ENTRY = 5;
public static final String defaultLoggerName = "SlickLog";
public String loggerName;
protected LogLevel minimumLevel;
protected SlickJunitController slick;
protected ArrayList buffer;
public static String NOTDEFINED = "NOTDEFINED";
public SlickResultLogger(SlickJunitController slick) {
this.slick = slick;
this.minimumLevel = SlickLogger.DEFAULT_MINIMUM_LOG_LEVEL;
buffer = new ArrayList<>(BUFFER_SIZE);
loggerName = defaultLoggerName;
}
protected void uploadLogsIfNecessary() {
if (SlickJunitController.isUsingSlick()) {
if (buffer.size() >= BUFFER_SIZE || (buffer.size() > 0 && (((new Date()).getTime() - buffer.get(0).getEntryTime().getTime()) / 1000) >= MAX_SECONDS_SINCE_FIRST_ENTRY)) {
flushLogs();
}
}
}
public void setLoggerName(String loggerName) {
this.loggerName = loggerName;
}
@Override
public void flushLogs() {
try {
if (SlickJunitController.isUsingSlick() && buffer.size() > 0) {
SlickJunitController controller = SlickJunitControllerFactory.getControllerInstance();
Result current = controller.getSlickClient().result(SlickJunitController.currentResult.get().getId()).get();
if (current != null) {
try {
controller.getSlickClient().result(current.getId()).addLogs(buffer);
} catch (SlickError e) {
e.printStackTrace();
System.err.println("!! ERROR: Unable to post logs to slick !!");
} finally {
buffer = new ArrayList<>(BUFFER_SIZE);
}
}
}
} catch (SlickError e) {
System.out.println("Error flushing logs: " + e.getMessage());
}
}
@Override
public LogLevel getMinimumLogLevel() {
return minimumLevel;
}
@Override
public void setMinimumLogLevel(LogLevel newMiniumum) {
this.minimumLevel = newMiniumum;
}
@Override
public void addLogEntry(LogEntry entry) {
if(System.getProperty(ConfigurationNames.SLICK_ENABLE_LOGS, "false").equalsIgnoreCase("true") || "slick.note".equals(entry.getLoggerName())) {
if (SlickJunitController.isUsingSlick() && !this.slick.equals(SlickResultLogger.NOTDEFINED)) {
buffer.add(entry);
uploadLogsIfNecessary();
}
flushLogs();
}
}
@Override
public boolean isLevelEnabled(LogLevel level) {
return level.getLevel() >= getMinimumLogLevel().getLevel();
}
private LogEntry getLogEntryFor(LogLevel level, String msg) {
LogEntry entry = new LogEntry();
entry.setEntryTime(new Date());
entry.setLevel(level.toString());
entry.setLoggerName(loggerName);
entry.setMessage(msg);
return entry;
}
private String getFormattedMessage(String message, Object[] arguments) {
return MessageFormat.format(message, arguments);
}
@Override
public void log(LogLevel level, String msg) {
if (isLevelEnabled(level)) {
addLogEntry(getLogEntryFor(level, msg));
}
}
@Override
public void log(LogLevel level, String format, Object arg) {
if (isLevelEnabled(level)) {
addLogEntry(getLogEntryFor(level, getFormattedMessage(format, new Object[]{arg})));
}
}
@Override
public void log(LogLevel level, String format, Object arg1, Object arg2) {
if (isLevelEnabled(level)) {
addLogEntry(getLogEntryFor(level, getFormattedMessage(format, new Object[]{arg1, arg2})));
}
}
@Override
public void log(LogLevel level, String format, Object... args) {
if (isLevelEnabled(level)) {
addLogEntry(getLogEntryFor(level, getFormattedMessage(format, args)));
}
}
@Override
public void log(LogLevel level, String msg, Throwable t) {
if (isLevelEnabled(level)) {
LogEntry entry = getLogEntryFor(level, msg);
entry.setExceptionClassName(t.getClass().getName());
entry.setExceptionMessage(t.getMessage());
StackTraceElement[] elements = t.getStackTrace();
ArrayList stackTrace = new ArrayList<>(elements.length);
for (StackTraceElement element : elements) {
stackTrace.add(element.toString());
}
entry.setExceptionStackTrace(stackTrace);
addLogEntry(entry);
}
}
@Override
public boolean isTraceEnabled() {
return isLevelEnabled(LogLevel.TRACE);
}
@Override
public void trace(String msg) {
log(LogLevel.TRACE, msg);
}
@Override
public void trace(String format, Object arg) {
log(LogLevel.TRACE, format, arg);
}
@Override
public void trace(String format, Object arg1, Object arg2) {
log(LogLevel.TRACE, format, arg1, arg2);
}
@Override
public void trace(String format, Object... args) {
log(LogLevel.TRACE, format, args);
}
@Override
public void trace(String msg, Throwable t) {
log(LogLevel.TRACE, msg, t);
}
@Override
public boolean isDebugEnabled() {
return isLevelEnabled(LogLevel.DEBUG);
}
@Override
public void debug(String msg) {
log(LogLevel.DEBUG, msg);
}
@Override
public void debug(String format, Object arg) {
log(LogLevel.DEBUG, format, arg);
}
@Override
public void debug(String format, Object arg1, Object arg2) {
log(LogLevel.DEBUG, format, arg1, arg2);
}
@Override
public void debug(String format, Object... args) {
log(LogLevel.DEBUG, format, args);
}
@Override
public void debug(String msg, Throwable t) {
log(LogLevel.DEBUG, msg, t);
}
@Override
public boolean isInfoEnabled() {
return isLevelEnabled(LogLevel.INFO);
}
@Override
public void info(String msg) {
log(LogLevel.INFO, msg);
}
@Override
public void info(String format, Object arg) {
log(LogLevel.INFO, format, arg);
}
@Override
public void info(String format, Object arg1, Object arg2) {
log(LogLevel.INFO, format, arg1, arg2);
}
@Override
public void info(String format, Object... args) {
log(LogLevel.INFO, format, args);
}
@Override
public void info(String msg, Throwable t) {
log(LogLevel.INFO, msg, t);
}
@Override
public boolean isWarnEnabled() {
return isLevelEnabled(LogLevel.WARN);
}
@Override
public void warn(String msg) {
log(LogLevel.WARN, msg);
}
@Override
public void warn(String format, Object arg) {
log(LogLevel.WARN, format, arg);
}
@Override
public void warn(String format, Object arg1, Object arg2) {
log(LogLevel.WARN, format, arg1, arg2);
}
@Override
public void warn(String format, Object... args) {
log(LogLevel.WARN, format, args);
}
@Override
public void warn(String msg, Throwable t) {
log(LogLevel.WARN, msg, t);
}
@Override
public boolean isErrorEnabled() {
return isLevelEnabled(LogLevel.ERROR);
}
@Override
public void error(String msg) {
log(LogLevel.ERROR, msg);
}
@Override
public void error(String format, Object arg) {
log(LogLevel.ERROR, format, arg);
}
@Override
public void error(String format, Object arg1, Object arg2) {
log(LogLevel.ERROR, format, arg1, arg2);
}
@Override
public void error(String format, Object... args) {
log(LogLevel.ERROR, format, args);
}
@Override
public void error(String msg, Throwable t) {
log(LogLevel.ERROR, msg, t);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy