001
014
015 package com.liferay.portal.kernel.log;
016
017 import java.util.Map;
018 import java.util.concurrent.ConcurrentHashMap;
019 import java.util.concurrent.ConcurrentMap;
020
021
025 public class LogFactoryUtil {
026
027 public static Log getLog(Class<?> c) {
028 return getLog(c.getName());
029 }
030
031 public static Log getLog(String name) {
032
033
034
035
036
037
038 LogWrapper logWrapper = _logWrappers.get(name);
039
040 if (logWrapper == null) {
041 logWrapper = new LogWrapper(_logFactory.getLog(name));
042
043 LogWrapper previousLogWrapper = _logWrappers.putIfAbsent(
044 name, logWrapper);
045
046 if (previousLogWrapper != null) {
047 logWrapper = previousLogWrapper;
048 }
049 }
050
051 return logWrapper;
052 }
053
054 public static void setLogFactory(LogFactory logFactory) {
055 for (Map.Entry<String, LogWrapper> entry : _logWrappers.entrySet()) {
056 String name = entry.getKey();
057
058 LogWrapper logWrapper = entry.getValue();
059
060 logWrapper.setLog(logFactory.getLog(name));
061 }
062
063
064
065
066
067 _logFactory = logFactory;
068 }
069
070 private static volatile LogFactory _logFactory = new Jdk14LogFactoryImpl();
071 private static final ConcurrentMap<String, LogWrapper> _logWrappers =
072 new ConcurrentHashMap<String, LogWrapper>();
073
074 }