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
028 public class LogFactoryUtil {
029
030 public static Log getLog(Class<?> c) {
031 return getLog(c.getName());
032 }
033
034 public static Log getLog(String name) {
035
036
037
038
039
040
041 LogWrapper logWrapper = _logWrappers.get(name);
042
043 if (logWrapper == null) {
044 logWrapper = new SanitizerLogWrapper(_logFactory.getLog(name));
045
046 LogWrapper previousLogWrapper = _logWrappers.putIfAbsent(
047 name, logWrapper);
048
049 if (previousLogWrapper != null) {
050 logWrapper = previousLogWrapper;
051 }
052 }
053
054 return logWrapper;
055 }
056
057 public static LogFactory getLogFactory() {
058 PortalRuntimePermission.checkGetBeanProperty(LogFactoryUtil.class);
059
060 return _logFactory;
061 }
062
063 public static void setLogFactory(LogFactory logFactory) {
064 PortalRuntimePermission.checkSetBeanProperty(LogFactoryUtil.class);
065
066 for (Map.Entry<String, LogWrapper> entry : _logWrappers.entrySet()) {
067 String name = entry.getKey();
068
069 LogWrapper logWrapper = entry.getValue();
070
071 logWrapper.setLog(logFactory.getLog(name));
072 }
073
074
075
076
077
078 _logFactory = logFactory;
079 }
080
081 private static volatile LogFactory _logFactory = new Jdk14LogFactoryImpl();
082
083 private static final ConcurrentMap<String, LogWrapper> _logWrappers =
084 new ConcurrentHashMap<String, LogWrapper>();
085
086 }