001package org.hl7.fhir.r5.context;
002
003import lombok.RequiredArgsConstructor;
004import org.hl7.fhir.utilities.MarkedToMoveToAdjunctPackage;
005import org.slf4j.Logger;
006import org.slf4j.Marker;
007import org.slf4j.MarkerFactory;
008import org.slf4j.event.Level;
009
010import java.util.HashMap;
011import java.util.Map;
012
013@RequiredArgsConstructor
014@MarkedToMoveToAdjunctPackage
015public class Slf4JLoggingService implements ILoggingService {
016
017  private final Logger logger;
018
019  static final Map<LogCategory, Marker> markers = new HashMap<>();
020
021  private static Marker getMarker(LogCategory category) {
022    return markers.computeIfAbsent(category, c -> {
023      String markerName = c.name().toLowerCase();
024      return MarkerFactory.getMarker(markerName);
025    });
026  }
027
028  @Override
029  public void logMessage(String message) {
030    logger.info(message);
031  }
032
033  @Override
034  public void logDebugMessage(LogCategory category, String message) {
035    logger.makeLoggingEventBuilder(Level.DEBUG)
036      .addMarker(getMarker(category))
037      .setMessage(message)
038      .log();
039  }
040
041}