package de.micromata.borgbutler.server.rest;
|
|
import de.micromata.borgbutler.json.JsonUtils;
|
import de.micromata.borgbutler.server.logging.Log4jMemoryAppender;
|
import de.micromata.borgbutler.server.logging.LogFilter;
|
import de.micromata.borgbutler.server.logging.LogLevel;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.ws.rs.GET;
|
import javax.ws.rs.Path;
|
import javax.ws.rs.Produces;
|
import javax.ws.rs.QueryParam;
|
import javax.ws.rs.core.Context;
|
import javax.ws.rs.core.MediaType;
|
|
@Path("/logging")
|
public class LoggingRest {
|
private Logger log = LoggerFactory.getLogger(LoggingRest.class);
|
|
/**
|
* @param requestContext
|
* @param search
|
* @param logLevelTreshold fatal, error, warn, info, debug or trace (case insensitive).
|
* @param maxSize Max size of the result list.
|
* @param ascendingOrder Default is false (default is descending order).
|
* @param lastReceivedOrderNumber The last received order number for updating log entries (preventing querying all entries again).
|
* @param prettyPrinter
|
* @return
|
*/
|
@GET
|
@Path("query")
|
@Produces(MediaType.APPLICATION_JSON)
|
public String query(@Context HttpServletRequest requestContext,
|
@QueryParam("search") String search, @QueryParam("treshold") String logLevelTreshold,
|
@QueryParam("maxSize") Integer maxSize, @QueryParam("ascendingOrder") Boolean ascendingOrder,
|
@QueryParam("lastReceivedOrderNumber") Integer lastReceivedOrderNumber,
|
@QueryParam("prettyPrinter") boolean prettyPrinter) {
|
LogFilter filter = new LogFilter();
|
filter.setSearch(search);
|
if (logLevelTreshold != null) {
|
try {
|
LogLevel treshold = LogLevel.valueOf(logLevelTreshold.trim().toUpperCase());
|
filter.setThreshold(treshold);
|
} catch (IllegalArgumentException ex) {
|
log.error("Can't parse log level treshold: " + logLevelTreshold + ". Supported values (case insensitive): " + LogLevel.getSupportedValues());
|
}
|
}
|
if (filter.getThreshold() == null) {
|
filter.setThreshold(LogLevel.INFO);
|
}
|
if (maxSize != null) {
|
filter.setMaxSize(maxSize);
|
}
|
if (ascendingOrder != null && ascendingOrder == true) {
|
filter.setAscendingOrder(true);
|
}
|
if (lastReceivedOrderNumber != null) {
|
filter.setLastReceivedLogOrderNumber(lastReceivedOrderNumber);
|
}
|
Log4jMemoryAppender appender = Log4jMemoryAppender.getInstance();
|
String json = JsonUtils.toJson(appender.query(filter, RestUtils.getUserLocale(requestContext)), prettyPrinter);
|
return json;
|
}
|
}
|