
com.amazonaws.log.InternalLogFactory Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of aws-java-sdk-osgi Show documentation
Show all versions of aws-java-sdk-osgi Show documentation
The AWS SDK for Java with support for OSGi. The AWS SDK for Java provides Java APIs for building software on AWS' cost-effective, scalable, and reliable infrastructure products. The AWS Java SDK allows developers to code against APIs for all of Amazon's infrastructure web services (Amazon S3, Amazon EC2, Amazon SQS, Amazon Relational Database Service, Amazon AutoScaling, etc).
/*
* Copyright (c) 2016. Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file 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 com.amazonaws.log;
import com.amazonaws.annotation.ThreadSafe;
/**
* Can be used to configure the default log factory for the AWSJavaClientCore
* and AWSJavaClientSigners. Default to JUL, unless AWSJavaClientRuntime is
* present which will default it to Jakarta Commons Logging.
*/
@ThreadSafe
public abstract class InternalLogFactory {
private static volatile InternalLogFactory factory = new JulLogFactory();
/** True if the log factory has been explicitly configured; false otherwise. */
private static volatile boolean factoryConfigured;
/**
* Returns an SDK logger that logs using the currently configured default
* log factory, given the class.
*/
public static InternalLogApi getLog(Class> clazz) {
return factoryConfigured
? factory.doGetLog(clazz)
: new InternalLog(clazz.getName()); // will look up actual logger per log
}
/**
* Returns an SDK logger that logs using the currently configured default
* log factory, given the name.
*/
public static InternalLogApi getLog(String name) {
return factoryConfigured
? factory.doGetLog(name)
: new InternalLog(name); // will look up actual logger per log
}
/**
* SPI to return a logger given a class.
*/
protected abstract InternalLogApi doGetLog(Class> clazz);
/**
* SPI to return a logger given a name.
*/
protected abstract InternalLogApi doGetLog(String name);
/**
* Returns the current default log factory.
*/
public static InternalLogFactory getFactory() {
return factory;
}
/**
* Used to explicitly configure the log factory. The log factory can only be
* configured at most once. All subsequent configurations will have no
* effect.
*
* Note explicitly configuring the log factory will have positive
* performance impact on all subsequent logging, since the specific logger
* can be directly referenced instead of being searched every time.
*
* @param factory
* the log factory to be used internally by the SDK
*
* @return true if the log factory is successfully configured; false
* otherwise (ie the log factory is not allowed to be configured
* more than once for performance reasons.)
*/
public synchronized static boolean configureFactory(
InternalLogFactory factory) {
if (factory == null)
throw new IllegalArgumentException();
if (factoryConfigured)
return false;
InternalLogFactory.factory = factory;
factoryConfigured = true;
return true;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy