package org.infinispan.commons.logging; import static org.jboss.logging.Logger.Level.ERROR; import static org.jboss.logging.Logger.Level.WARN; import java.io.IOException; import org.infinispan.commons.CacheConfigurationException; import org.jboss.logging.BasicLogger; import org.jboss.logging.annotations.Cause; import org.jboss.logging.annotations.LogMessage; import org.jboss.logging.annotations.Message; import org.jboss.logging.annotations.MessageLogger; /** * Infinispan's log abstraction layer on top of JBoss Logging. * <p/> * It contains explicit methods for all INFO or above levels so that they can * be internationalized. For the commons module, message ids ranging from 0901 * to 1000 inclusively have been reserved. * <p/> * <code> Log log = LogFactory.getLog( getClass() ); </code> The above will get * you an instance of <tt>Log</tt>, which can be used to generate log messages * either via JBoss Logging which then can delegate to Log4J (if the libraries * are present) or (if not) the built-in JDK logger. * <p/> * In addition to the 6 log levels available, this framework also supports * parameter interpolation, similar to the JDKs {@link String#format(String, Object...)} * method. What this means is, that the following block: * <code> if (log.isTraceEnabled()) { log.trace("This is a message " + message + " and some other value is " + value); } * </code> * <p/> * ... could be replaced with ... * <p/> * <code> if (log.isTraceEnabled()) log.tracef("This is a message %s and some other value is %s", message, value); * </code> * <p/> * This greatly enhances code readability. * <p/> * If you are passing a <tt>Throwable</tt>, note that this should be passed in * <i>before</i> the vararg parameter list. * <p/> * * @author Manik Surtani * @since 4.0 * @private */ @MessageLogger(projectCode = "ISPN") public interface Log extends BasicLogger { @LogMessage(level = WARN) @Message(value = "Property %s could not be replaced as intended!", id = 901) void propertyCouldNotBeReplaced(String line); @LogMessage(level = WARN) @Message(value = "Invocation of %s threw an exception %s. Exception is ignored.", id = 902) void ignoringException(String methodName, String exceptionName, @Cause Throwable t); @LogMessage(level = ERROR) @Message(value = "Unable to set value!", id = 903) void unableToSetValue(@Cause Exception e); @Message(value = "Error while initializing SSL context", id = 904) CacheConfigurationException sslInitializationException(@Cause Throwable e); @LogMessage(level = ERROR) @Message(value = "Unable to load %s from any of the following classloaders: %s", id=905) void unableToLoadClass(String classname, String classloaders, @Cause Throwable cause); @LogMessage(level = WARN) @Message(value = "Unable to convert string property [%s] to an int! Using default value of %d", id = 906) void unableToConvertStringPropertyToInt(String value, int defaultValue); @LogMessage(level = WARN) @Message(value = "Unable to convert string property [%s] to a long! Using default value of %d", id = 907) void unableToConvertStringPropertyToLong(String value, long defaultValue); @LogMessage(level = WARN) @Message(value = "Unable to convert string property [%s] to a boolean! Using default value of %b", id = 908) void unableToConvertStringPropertyToBoolean(String value, boolean defaultValue); @Message(value = "Unwrapping %s to a type of %s is not a supported", id = 909) IllegalArgumentException unableToUnwrap(Object o, Class<?> clazz); @Message(value = "Illegal value for thread pool parameter(s) %s, it should be: %s", id = 910) CacheConfigurationException illegalValueThreadPoolParameter(String parameter, String requirement); @Message(value = "Unwrapping of any instances in %s to a type of %s is not a supported", id = 911) IllegalArgumentException unableToUnwrapAny(String objs, Class<?> clazz); @Message(value = "Expecting a protected configuration for %s", id = 912) IllegalStateException unprotectedAttributeSet(String name); @Message(value = "Expecting a unprotected configuration for %s", id = 913) IllegalStateException protectedAttributeSet(String name); @Message(value = "Duplicate attribute '%s' in attribute set '%s'", id = 914) IllegalArgumentException attributeSetDuplicateAttribute(String name, String setName); @Message(value = "No such attribute '%s' in attribute set '%s'", id = 915) IllegalArgumentException noSuchAttribute(String name, String setName); @Message(value = "No attribute copier for type '%s'", id = 916) IllegalArgumentException noAttributeCopierForType(Class<?> klass); @Message(value = "Cannot resize unbounded container", id = 917) UnsupportedOperationException cannotResizeUnboundedContainer(); @Message(value = "Cannot find resource '%s'", id = 918) IOException cannotFindResource(String fileName); @Message(value = "Multiple errors encountered while validating configuration", id = 919) CacheConfigurationException multipleConfigurationValidationErrors(); @Message(value = "Unable to load file using scheme %s", id = 920) UnsupportedOperationException unableToLoadFileUsingScheme(String scheme); @Message(value = "The alias '%s' does not exist in the key store '%s'", id = 921) SecurityException noSuchAliasInKeyStore(String keyAlias, String keyStoreFileName); }