/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates
* and other contributors as indicated by the @author tags.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.keycloak.services;
import org.jboss.logging.BasicLogger;
import org.jboss.logging.Logger;
import org.jboss.logging.annotations.Cause;
import org.jboss.logging.annotations.LogMessage;
import org.jboss.logging.annotations.Message;
import org.jboss.logging.annotations.MessageLogger;
import org.jboss.logging.annotations.Once;
import org.keycloak.email.EmailException;
import org.keycloak.events.EventListenerProvider;
import org.keycloak.models.ModelDuplicateException;
import javax.naming.NamingException;
import java.io.IOException;
import java.net.URI;
import static org.jboss.logging.Logger.Level.DEBUG;
import static org.jboss.logging.Logger.Level.ERROR;
import static org.jboss.logging.Logger.Level.FATAL;
import static org.jboss.logging.Logger.Level.INFO;
import static org.jboss.logging.Logger.Level.WARN;
/**
* Main logger for the Keycloak Services module.
*
* @author Stan Silvert ssilvert@redhat.com (C) 2016 Red Hat Inc.
*/
@MessageLogger(projectCode="KC-SERVICES", length=4)
public interface ServicesLogger extends BasicLogger {
ServicesLogger LOGGER = Logger.getMessageLogger(ServicesLogger.class, "org.keycloak.services");
@LogMessage(level = INFO)
@Message(id=1, value="Loading config from %s")
void loadingFrom(Object from);
@LogMessage(level = ERROR)
@Message(id=2, value="Failed to migrate datamodel")
void migrationFailure(@Cause Throwable t);
@LogMessage(level = INFO)
@Message(id=3, value="Not importing realm %s from %s. It already exists.")
void realmExists(String realmName, String from);
@LogMessage(level = INFO)
@Message(id=4, value="Imported realm %s from %s.")
void importedRealm(String realmName, String from);
@LogMessage(level = WARN)
@Message(id=5, value="Unable to import realm %s from %s.")
void unableToImportRealm(@Cause Throwable t, String realmName, String from);
@LogMessage(level = INFO)
@Message(id=6, value="Importing users from '%s'")
void imprtingUsersFrom(Object from);
@LogMessage(level = ERROR)
@Message(id=7, value="Failed to load 'keycloak-add-user.json'")
void failedToLoadUsers(@Cause Throwable t);
@LogMessage(level = ERROR)
@Message(id=8, value="Failed to add user %s to realm %s: realm not found")
void addUserFailedRealmNotFound(String user, String realm);
@LogMessage(level = INFO)
@Message(id=9, value="Added user '%s' to realm '%s'")
void addUserSuccess(String user, String realm);
@LogMessage(level = ERROR)
@Message(id=10, value="Failed to add user '%s' to realm '%s': user with username exists")
void addUserFailedUserExists(String user, String realm);
@LogMessage(level = ERROR)
@Message(id=11, value="Failed to add user '%s' to realm '%s'")
void addUserFailed(@Cause Throwable t, String user, String realm);
@LogMessage(level = ERROR)
@Message(id=12, value="Failed to delete '%s'")
void failedToDeleteFile(String fileName);
@LogMessage(level = WARN)
@Message(id=13, value="Failed authentication")
void failedAuthentication(@Cause Throwable t);
@LogMessage(level = DEBUG)
@Message(id=14, value="Failed client authentication")
void failedClientAuthentication(@Cause Throwable t);
@LogMessage(level = ERROR)
@Message(id=15, value="Unexpected error when authenticating client")
void errorAuthenticatingClient(@Cause Throwable t);
@LogMessage(level = ERROR)
@Message(id=16, value="Unknown flow to execute with")
void unknownFlow();
@LogMessage(level = ERROR)
@Message(id=17, value="Unknown result status")
void unknownResultStatus();
@LogMessage(level = WARN)
@Message(id=18, value="Client %s doesn't have have authentication method configured. Fallback to %s")
void authMethodFallback(String clientId, String expectedClientAuthType);
@LogMessage(level = WARN)
@Message(id=19, value="No duplication detected.")
void noDuplicationDetected();
@LogMessage(level = WARN)
@Message(id=20, value="%s is null. Reset flow and enforce showing reviewProfile page")
void resetFlow(String emailOrUserName);
@LogMessage(level = ERROR)
@Message(id=21, value="Failed to send email to confirm identity broker linking")
void confirmBrokerEmailFailed(@Cause Throwable t);
@LogMessage(level = ERROR)
@Message(id=22, value="Key parameter don't match with the expected value from client session")
void keyParamDoesNotMatch();
@LogMessage(level = WARN)
@Message(id=23, value="Smtp is not configured for the realm. Ignoring email verification authenticator")
void smtpNotConfigured();
@LogMessage(level = ERROR)
@Message(id=24, value="")
void modelDuplicateException(@Cause ModelDuplicateException mde);
@LogMessage(level = ERROR)
@Message(id=25, value="Error when validating client assertion")
void errorValidatingAssertion(@Cause Throwable t);
@LogMessage(level = ERROR)
@Message(id=26, value="Failed to send password reset email")
void failedToSendPwdResetEmail(@Cause EmailException e);
@LogMessage(level = ERROR)
@Message(id=28, value="Recaptcha failed")
void recaptchaFailed(@Cause Exception e);
@LogMessage(level = ERROR)
@Message(id=29, value="Failed to send email")
void failedToSendEmail(@Cause Exception e);
@LogMessage(level = INFO)
@Message(id=30, value="Full model import requested. Strategy: %s")
void fullModelImport(String strategy);
@LogMessage(level = INFO)
@Message(id=31, value="Import of realm '%s' requested. Strategy: %s")
void realmImportRequested(String realmName, String strategy);
@LogMessage(level = INFO)
@Message(id=32, value="Import finished successfully")
void importSuccess();
@LogMessage(level = INFO)
@Message(id=33, value="Full model export requested")
void fullModelExportRequested();
@LogMessage(level = INFO)
@Message(id=34, value="Export of realm '%s' requested.")
void realmExportRequested(String realmName);
@LogMessage(level = INFO)
@Message(id=35, value="Export finished successfully")
void exportSuccess();
@LogMessage(level = ERROR)
@Message(id=36, value="Error overwriting %s")
void overwriteError(@Cause Exception e, String name);
@LogMessage(level = ERROR)
@Message(id=37, value="Error creating %s")
void creationError(@Cause Exception e, String name);
@LogMessage(level = ERROR)
@Message(id=38, value="Error importing roles")
void roleImportError(@Cause Exception e);
@LogMessage(level = WARN)
@Message(id=39, value="Untranslated protocol Error: %s so we return default SAML error")
void untranslatedProtocol(String errorName);
@LogMessage(level = WARN)
@Message(id=40, value="Using deprecated 'directGrantsOnly' configuration in JSON representation. It will be removed in future versions")
void usingDeprecatedDirectGrantsOnly();
@LogMessage(level = WARN)
@Message(id=41, value="Invoking deprecated endpoint %s")
void invokingDeprecatedEndpoint(URI requestUri);
@LogMessage(level = ERROR)
@Message(id=42, value="Response_mode 'query' not allowed for implicit or hybrid flow")
void responseModeQueryNotAllowed();
@LogMessage(level = ERROR)
@Message(id=43, value="Client session is null")
void clientSessionNull();
@LogMessage(level = ERROR)
@Message(id=44, value="Client model in client session is null")
void clientModelNull();
@LogMessage(level = ERROR)
@Message(id=45, value="Invalid token. Token verification failed.")
void invalidToken();
@LogMessage(level = WARN)
@Message(id=46, value="Multiple values found '%s' for protocol mapper '%s' but expected just single value")
void multipleValuesForMapper(String attrValue, String mapper);
@LogMessage(level = WARN)
@Message(id=47, value="%s (%s) is implementing the internal SPI %s. This SPI is internal and may change without notice")
void spiMayChange(String factoryId, String factoryClass, String spiName);
@LogMessage(level = ERROR)
@Message(id=48, value="Exception during rollback")
void exceptionDuringRollback(@Cause RuntimeException e);
@LogMessage(level = ERROR)
@Message(id=49, value="%s")
void clientRegistrationException(String message);
@LogMessage(level = INFO)
@Message(id=50, value="Initializing %s realm")
void initializingAdminRealm(String adminRealmName);
@LogMessage(level = WARN)
@Message(id=51, value="Failed to logout client, continuing")
void failedToLogoutClient(@Cause Exception e);
@LogMessage(level = ERROR)
@Message(id=52, value="Failed processing type")
void failedProcessingType(@Cause Exception e);
@LogMessage(level = WARN)
@Message(id=53, value="login failure for user %s from ip %s")
void loginFailure(String user, String ip);
@LogMessage(level = ERROR)
@Message(id=54, value="Unknown action: %s")
void unknownAction(String action);
@LogMessage(level = ERROR)
@Message(id=55, value="%s")
void errorAuthenticating(@Cause Exception e, String message);
@LogMessage(level = WARN)
@Message(id=56, value="Error when closing LDAP connection")
void errorClosingLDAP(@Cause NamingException ne);
@LogMessage(level = WARN)
@Message(id=57, value="Logout for client '%s' failed")
void logoutFailed(@Cause IOException ioe, String clientId);
@LogMessage(level = WARN)
@Message(id=58, value="Failed to send revocation request")
void failedToSendRevocation(@Cause IOException ioe);
@LogMessage(level = WARN)
@Message(id=59, value="Availability test failed for uri '%s'")
void availabilityTestFailed(String managementUrl);
@LogMessage(level = WARN)
@Message(id=60, value="Role '%s' not available in realm")
void roleNotInRealm(String offlineAccessRole);
@LogMessage(level = ERROR)
@Message(id=61, value="Error occurred during full sync of users")
void errorDuringFullUserSync(@Cause Throwable t);
@LogMessage(level = ERROR)
@Message(id=62, value="Error occurred during sync of changed users")
void errorDuringChangedUserSync(@Cause Throwable t);
@LogMessage(level = WARN)
@Message(id=63, value="Failed to format message due to: %s")
void failedToFormatMessage(String cause);
@LogMessage(level = WARN)
@Message(id=64, value="Failed to load messages")
void failedToloadMessages(@Cause IOException ioe);
@LogMessage(level = ERROR)
@Message(id=65, value="Failed to update Password")
void failedToUpdatePassword(@Cause Exception e);
@LogMessage(level = ERROR)
@Message(id=66, value="Could not fire event.")
void couldNotFireEvent(@Cause Exception e);
@LogMessage(level = ERROR)
@Message(id=67, value="failed to parse RestartLoginCookie")
void failedToParseRestartLoginCookie(@Cause Exception e);
@LogMessage(level = ERROR)
@Message(id=68, value="Not found serialized context in clientSession under note '%s'")
void notFoundSerializedCtxInClientSession(String noteKey);
@LogMessage(level = ERROR)
@Message(id=69, value="Flow not configured for identity provider '%s'")
void flowNotConfigForIDP(String identityProviderAlias);
@LogMessage(level = ERROR)
@Message(id=70, value="Not found configured flow with ID '%s' for identity provider '%s'")
void flowNotFoundForIDP(String flowId, String identityProviderAlias);
@LogMessage(level = ERROR)
@Message(id=71, value="required action doesn't match current required action")
void reqdActionDoesNotMatch();
@LogMessage(level = ERROR)
@Message(id=72, value="Invalid key for email verification")
void invalidKeyForEmailVerification();
@LogMessage(level = ERROR)
@Message(id=73, value="User session was null")
void userSessionNull();
@LogMessage(level = ERROR)
@Message(id=74, value="Required action provider was null")
void actionProviderNull();
@LogMessage(level = WARN)
@Message(id=75, value="Failed to get theme request")
void failedToGetThemeRequest(@Cause Exception e);
@LogMessage(level = ERROR)
@Message(id=76, value="Rejected non-local attempt to create initial user from %s")
void rejectedNonLocalAttemptToCreateInitialUser(String remoteAddr);
@LogMessage(level = INFO)
@Message(id=77, value="Created initial admin user with username %s")
void createdInitialAdminUser(String userName);
@LogMessage(level = WARN)
@Message(id=78, value="Rejected attempt to create initial user as user is already created")
void initialUserAlreadyCreated();
@LogMessage(level = WARN)
@Message(id=79, value="Locale not specified for messages.json")
void localeNotSpecified();
@LogMessage(level = WARN)
@Message(id=80, value="Message bundle not found for language code '%s'")
void msgBundleNotFound(String lang);
@LogMessage(level = FATAL)
@Message(id=81, value="Message bundle not found for language code 'en'")
void msgBundleNotFoundForEn();
@LogMessage(level = ERROR)
@Message(id=82, value="Admin Events enabled, but no event store provider configured")
void noEventStoreProvider();
@LogMessage(level = ERROR)
@Message(id=83, value="Event listener '%s' registered, but provider not found")
void providerNotFound(String id);
@LogMessage(level = ERROR)
@Message(id=84, value="Failed to save event")
void failedToSaveEvent(@Cause Throwable t);
@LogMessage(level = ERROR)
@Message(id=85, value="Failed to send type to %s")
void failedToSendType(@Cause Throwable t, EventListenerProvider listener);
@LogMessage(level = INFO)
@Message(id=86, value="Added 'kerberos' to required realm credentials")
void addedKerberosToRealmCredentials();
@LogMessage(level = INFO)
@Message(id=87, value="Syncing data for mapper '%s' of type '%s'. Direction: %s")
void syncingDataForMapper(String modelName, String mapperType, String direction);
@LogMessage(level = ERROR)
@Message(id=88, value="Failed to send execute actions email")
void failedToSendActionsEmail(@Cause EmailException e);
@LogMessage(level = ERROR)
@Message(id=89, value="Failed to run scheduled task %s")
void failedToRunScheduledTask(@Cause Throwable t, String taskClass);
@LogMessage(level = ERROR)
@Message(id=90, value="Failed to close ProviderSession")
void failedToCloseProviderSession(@Cause Throwable t);
@LogMessage(level = WARN)
@Message(id=91, value="Request is missing scope 'openid' so it's not treated as OIDC, but just pure OAuth2 request. This can have impact in future versions (eg. removed IDToken from the Token Response)")
@Once
void oidcScopeMissing();
@LogMessage(level = ERROR)
@Message(id=92, value="Missing parameter: %s")
void missingParameter(String paramName);
@LogMessage(level = ERROR)
@Message(id=93, value="Invalid parameter value for: %s")
void invalidParameter(String paramName);
@LogMessage(level = ERROR)
@Message(id=94, value="Unsupported parameter: %s")
void unsupportedParameter(String paramName);
@LogMessage(level = ERROR)
@Message(id=95, value="Client is not allowed to initiate browser login with given response_type. %s flow is disabled for the client.")
void flowNotAllowed(String flowName);
@LogMessage(level = WARN)
@Message(id=96, value="Not found JWK of supported keyType under jwks_uri for usage: %s")
void supportedJwkNotFound(String usage);
@LogMessage(level = WARN)
@Message(id=97, value="Invalid request")
void invalidRequest(@Cause Throwable t);
@LogMessage(level = WARN)
@Message(id=99, value="Operation '%s' rejected. %s")
void clientRegistrationRequestRejected(String opDescription, String detailedMessage);
@LogMessage(level = WARN)
@Message(id=100, value= "ProtocolMapper '%s' of type '%s' not allowed")
void clientRegistrationMapperNotAllowed(String mapperName, String mapperType);
@LogMessage(level = WARN)
@Message(id=101, value= "Failed to verify remote host : %s")
void failedToVerifyRemoteHost(String hostname);
@LogMessage(level = WARN)
@Message(id=102, value= "URL '%s' doesn't match any trustedHost or trustedDomain")
void urlDoesntMatch(String url);
}