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 if (SanitizerLogWrapper.isEnabled()) {
045 logWrapper = new SanitizerLogWrapper(_logFactory.getLog(name));
046 }
047 else {
048 logWrapper = new LogWrapper(_logFactory.getLog(name));
049 }
050
051 LogWrapper previousLogWrapper = _logWrappers.putIfAbsent(
052 name, logWrapper);
053
054 if (previousLogWrapper != null) {
055 logWrapper = previousLogWrapper;
056 }
057 }
058
059 return logWrapper;
060 }
061
062 public static LogFactory getLogFactory() {
063 PortalRuntimePermission.checkGetBeanProperty(LogFactoryUtil.class);
064
065 return _logFactory;
066 }
067
068 public static void setLogFactory(LogFactory logFactory) {
069 PortalRuntimePermission.checkSetBeanProperty(LogFactoryUtil.class);
070
071 for (Map.Entry<String, LogWrapper> entry : _logWrappers.entrySet()) {
072 String name = entry.getKey();
073
074 LogWrapper logWrapper = entry.getValue();
075
076 logWrapper.setLog(logFactory.getLog(name));
077 }
078
079
080
081
082
083 _logFactory = logFactory;
084 }
085
086 private static volatile LogFactory _logFactory = new Jdk14LogFactoryImpl();
087
088 private static final ConcurrentMap<String, LogWrapper> _logWrappers =
089 new ConcurrentHashMap<String, LogWrapper>();
090
091 }