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

com.atomikos.logging.LoggerFactory Maven / Gradle / Ivy

/**
 * Copyright (C) 2000-2020 Atomikos 
 *
 * LICENSE CONDITIONS
 *
 * See http://www.atomikos.com/Main/WhichLicenseApplies for details.
 */

package com.atomikos.logging;

public final class LoggerFactory {

	private LoggerFactory() {

	}

	static LoggerFactoryDelegate loggerFactoryDelegate;

	public static final Logger createLogger(Class clazz) {
		return loggerFactoryDelegate.createLogger(clazz);
	}

	static void setLoggerFactoryDelegate(LoggerFactoryDelegate loggerFactoryDelegate) {
		LoggerFactory.loggerFactoryDelegate = loggerFactoryDelegate;
	}

	static {
		String cname = null;
		//let's try with
		try {
			Class.forName("org.slf4j.impl.StaticLoggerBinder");
			cname = "com.atomikos.logging.Slf4JLoggerFactoryDelegate";
		} catch (Throwable ex) {
			System.out.println("No org.slf4j.impl.StaticLoggerBinder found in ClassPath, trying with log4j2...");
		}
		
		if(cname==null){
			try {
				Class.forName("org.apache.logging.log4j.Logger");
				cname = "com.atomikos.logging.Log4j2LoggerFactoryDelegate";
			} catch (Throwable ex) {
				//don't print stackTrace - cf bug 118228
				System.out.println("No org.apache.logging.log4j.Logger found found in ClassPath, trying with log4j...");
			}
		}

		if(cname==null){
			try {
				Class.forName("org.apache.log4j.Logger");
				cname = "com.atomikos.logging.Log4JLoggerFactoryDelegate";
			} catch (Throwable ex) {
				System.out.println("No org.apache.log4j.Logger found found in ClassPath, falling back default...");
			}
		}

		try {
			if (cname != null) {
				Class loggerClass = (Class) Class.forName(cname.trim(), true, LoggerFactory.class.getClassLoader());
				loggerFactoryDelegate = (LoggerFactoryDelegate) loggerClass.newInstance();
			} else {
				fallbackToDefault();
			}
		} catch (Throwable ex) {
			// ignore - if we get here, some issue prevented the logger class
			// from being loaded.
			// maybe a ClassNotFound or NoClassDefFound or similar. Just use
			// j.u.l
			fallbackToDefault();
		}
		Logger logger = createLogger(LoggerFactory.class);
		logger.logDebug("Using " + loggerFactoryDelegate + " for logging.");
	}

	private static void fallbackToDefault() {
		setLoggerFactoryDelegate(new JULLoggerFactoryDelegate());
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy