LogEmitter.java

package pro.verron.officestamper;

import org.jspecify.annotations.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.event.Level;

import java.util.Map;

class LogEmitter implements Emitter {

    private static final Logger logger = LoggerFactory.getLogger(LogEmitter.class);

    // Minimal structured logging when --log-format=json
    @Override
    public void emit(String level, String message, @Nullable Map<String, ?> fields) {
        // Human logs via java.util.logging
        var lvl = switch (level) {
            case "ERROR" -> Level.ERROR;
            case "WARN" -> Level.WARN;
            default -> Level.INFO;
        };
        logger.atLevel(lvl).log(fields == null || fields.isEmpty() ? message : message + " | " + fields);
    }
}