All Downloads are FREE. Search and download functionalities are using the official Maven repository.

no.nav.apiapp.security.veilarbabac.MetrikkLogger Maven / Gradle / Ivy

package no.nav.apiapp.security.veilarbabac;

import io.micrometer.core.instrument.MeterRegistry;
import no.nav.common.auth.SubjectHandler;
import no.nav.metrics.MetricsFactory;
import org.slf4j.Logger;

import java.util.function.Supplier;

class MetrikkLogger {

    private final MeterRegistry meterRegistry = MetricsFactory.getMeterRegistry();

    private boolean erAvvik = false;
    private String action = "read";
    private Supplier idSupplier = ()->"";
    private Logger logger;

    MetrikkLogger(Logger logger, String action, Supplier idSupplier) {
        this.action = action;
        this.idSupplier = idSupplier;
        this.logger = logger;
    }

    public MetrikkLogger logger(Logger logger) {
        this.logger = logger;
        return this;
    }

    void erAvvik() {
        this.erAvvik = true;
    }

    void loggMetrikk(Tilgangstype tilgangstype, boolean foretrekkVeilarbabac) {
        meterRegistry.counter("veilarbabac-pepclient",
                "tilgangstype",
                tilgangstype.name(),
                "identType",
                SubjectHandler.getIdentType().map(Enum::name).orElse("unknown"),
                "action",
                action,
                "avvik",
                Boolean.toString(erAvvik),
                "foretrekkVeilarbAbac",
                Boolean.toString(foretrekkVeilarbabac)
        ).increment();

        if(erAvvik) {
            logger.warn("Fikk avvik i tilgang for {}", idSupplier.get());
        }
    }

    enum Tilgangstype {
        PersonAktoerId,
        PersonFoedselsnummer,
        Enhet
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy