@Bean
        @ConditionalOnMissingBean(name = "filterAndDelegateAuditTrailManager")
        @RefreshScope(proxyMode = ScopedProxyMode.DEFAULT)
        protected AuditTrailManager filterAndDelegateAuditTrailManager(
            final ConfigurableApplicationContext applicationContext,
            @Qualifier(AuditTrailExecutionPlan.BEAN_NAME)
            final AuditTrailExecutionPlan auditTrailExecutionPlan,
            final CasConfigurationProperties casProperties) {
            return BeanSupplier.of(AuditTrailManager.class)
                .when(CONDITION_AUDIT.given(applicationContext.getEnvironment()))
                .supply(() -> {
                    val audit = casProperties.getAudit().getEngine();
                    val auditFormat = AuditTrailManager.AuditFormats.valueOf(audit.getAuditFormat().name());
                    val auditManager = new FilterAndDelegateAuditTrailManager(
                        auditTrailExecutionPlan.getAuditTrailManagers(),
                        audit.getSupportedActions(), audit.getExcludedActions());
                    auditManager.setAuditFormat(auditFormat);
                    return auditManager;
                })
                .otherwiseProxy()
                .get();
        }
This is {@link CasCoreAuditAutoConfiguration}.

@author Misagh Moayyed
@since 5.0.0
core/cas-server-core-audit/src/main/java/org/apereo/cas/config/CasCoreAuditAutoConfiguration.java