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