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

org.tkit.quarkus.log.cdi.runtime.LogRuntimeConfig Maven / Gradle / Ivy

The newest version!
package org.tkit.quarkus.log.cdi.runtime;

import java.util.Map;
import java.util.Optional;

import io.quarkus.runtime.annotations.*;
import io.smallrye.config.ConfigMapping;
import io.smallrye.config.WithDefault;
import io.smallrye.config.WithName;
import io.smallrye.config.WithParentName;

@ConfigDocFilename("tkit-quarkus-log-cdi.adoc")
@ConfigRoot(phase = ConfigPhase.RUN_TIME)
@ConfigMapping(prefix = "tkit.log.cdi")
public interface LogRuntimeConfig {

    /**
     * Enable or disable interceptor
     */
    @WithName("enabled")
    @WithDefault("true")
    boolean enabled();

    /**
     * Prefix for custom data mdc entries
     */
    @WithName("custom-data.prefix")
    Optional customDataPrefix();

    /**
     * Start message
     */
    @WithName("start")
    StartLogMessage start();

    /**
     * Succeed message
     */
    @WithName("succeed")
    SucceedLogMessage succeed();

    /**
     * Failed message
     */
    @WithName("failed")
    FailedLogMessage failed();

    /**
     * Return void method template
     */
    @WithName("return-void-template")
    @WithDefault("void")
    String returnVoidTemplate();

    /**
     * Service configuration
     */
    @WithName("service")
    Map service();

    /**
     * Mdc error key for FBN error code
     */
    @WithName("mdc.errorKey")
    @WithDefault("errorNumber")
    String errorNumberKey();

    /**
     * Start message
     */
    interface StartLogMessage {

        /**
         * Enable or disable start message
         */
        @WithName("enabled")
        @WithDefault("false")
        boolean enabled();

        /**
         * Message template
         * 0 - method
         * 1 - parameters
         */
        @WithName("template")
        @WithDefault("%1$s(%2$s) started.")
        String template();
    }

    /**
     * Succeed message
     */
    interface SucceedLogMessage {

        /**
         * Enable or disable end message
         */
        @WithName("enabled")
        @WithDefault("true")
        boolean enabled();

        /**
         * Message template
         * 1 - method
         * 2 - parameters
         * 3 - return value
         * 4 - time
         */
        @WithName("template")
        @WithDefault("%1$s(%2$s):%3$s [%4$.3fs]")
        String template();
    }

    /**
     * Failed message
     */
    interface FailedLogMessage {

        /**
         * Enable or disable end message
         */
        @WithName("enabled")
        @WithDefault("true")
        boolean enabled();

        /**
         * Message template
         * 1 - method
         * 2 - parameters
         * 3 - return value
         * 4 - time
         */
        @WithName("template")
        @WithDefault("%1$s(%2$s) throw %3$s [%4$.3fs]")
        String template();
    }

    /**
     * Service configuration.
     */
    interface ServiceConfig {

        /**
         * Service controller config
         */
        @WithParentName
        LogServiceConfig config();

        /**
         * Service methods
         */
        @WithName("method")
        Map method();

    }

    /**
     * Method configuration.
     */
    interface MethodConfig {

        /**
         * Service controller config
         */
        @WithParentName
        LogServiceConfig config();

        /**
         * Return mask
         */
        @WithName("return-mask")
        Optional returnMask();

        /**
         * Exclude parameters
         */
        @WithName("param")
        Map params();

    }

    /**
     * Rest-controller configuration.
     */
    interface LogServiceConfig {

        /**
         * Enable or disable service log
         */
        @WithName("log")
        Optional log();

        /**
         * Enable or disable service stacktrace
         */
        @WithName("stacktrace")
        Optional stacktrace();

    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy