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

org.cardanofoundation.hydra.client.SLF4JHydraLogger Maven / Gradle / Ivy

The newest version!
package org.cardanofoundation.hydra.client;

import lombok.AllArgsConstructor;
import lombok.Builder;
import org.cardanofoundation.hydra.core.model.HydraState;
import org.cardanofoundation.hydra.core.model.query.response.Response;
import org.slf4j.Logger;

@Builder(builderMethodName = "hiddenBuilder")
@AllArgsConstructor
public class SLF4JHydraLogger extends HydraQueryEventListener.Stub implements HydraStateEventListener {

    private final Logger logger;

    private final String actor;

    @Builder.Default
    private final boolean warnOnFailure = true;

    public static SLF4JHydraLoggerBuilder builder(Logger logger, String actor) {
        return hiddenBuilder().logger(logger).actor(actor);
    }

    public static SLF4JHydraLogger of(Logger logger, String actor) {
        return SLF4JHydraLogger.builder(logger, actor).build();
    }

    @Override
    public void onSuccess(Response response) {
        logger.info(msg(response));
    }

    @Override
    public void onFailure(Response response) {
        if (warnOnFailure) {
            logger.warn(msg(response));
        } else {
            logger.error(msg(response));
        }
    }

    private String msg(Response response) {
        return String.format("[%s]:%s", actor, response.toString());
    }

    @Override
    public void onStateChanged(HydraState prevState, HydraState newState) {
        logger.info("[{}]: prev hydra state:{}, new hydra state:{}", actor, prevState, newState);
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy