package fr.openwide.core.commons.util.report;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import org.slf4j.Logger;
import org.slf4j.MDC;
public final class BatchReportLoggerUtil {
public static final String MDC_CONTEXT_KEY = "BatchReportContext";
public static void log(Logger logger, BatchReport batchReport) {
Map<String, List<BatchReportItem>> items = batchReport.getItems();
Set<Entry<String, List<BatchReportItem>>> entries = items.entrySet();
for (Entry<String, List<BatchReportItem>> entry : entries) {
logger.info(entry.getKey());
try {
MDC.put(MDC_CONTEXT_KEY, entry.getKey());
for (BatchReportItem reportItem : entry.getValue()) {
if (BatchReportItemSeverity.INFO.equals(reportItem.getSeverity())) {
logger.info(reportItem.getMessage());
} else if (BatchReportItemSeverity.DEBUG.equals(reportItem.getSeverity())) {
logger.debug(reportItem.getMessage());
} else if (BatchReportItemSeverity.TRACE.equals(reportItem.getSeverity())) {
logger.trace(reportItem.getMessage());
} else if (BatchReportItemSeverity.WARN.equals(reportItem.getSeverity())) {
logger.warn(reportItem.getMessage());
} else if (BatchReportItemSeverity.ERROR.equals(reportItem.getSeverity())) {
if (reportItem.getException() != null) {
logger.error(reportItem.getMessage(), reportItem.getException());
} else {
logger.error(reportItem.getMessage());
}
}
}
} finally {
MDC.remove(MDC_CONTEXT_KEY);
}
}
}
private BatchReportLoggerUtil() {
}
}