1
14
15 package com.liferay.portal.kernel.log;
16
17 import java.util.Map;
18 import java.util.concurrent.ConcurrentHashMap;
19 import java.util.concurrent.ConcurrentMap;
20
21
27 public class LogFactoryUtil {
28
29 public static Log getLog(Class<?> c) {
30 return getLog(c.getName());
31 }
32
33 public static Log getLog(String name) {
34
35
40 LogWrapper logWrapper = _logWrappers.get(name);
41
42 if (logWrapper == null) {
43 logWrapper = new LogWrapper(_logFactory.getLog(name));
44
45 LogWrapper previousLogWrapper = _logWrappers.putIfAbsent(
46 name, logWrapper);
47
48 if (previousLogWrapper != null) {
49 logWrapper = previousLogWrapper;
50 }
51 }
52
53 return logWrapper;
54 }
55
56 public static void setLogFactory(LogFactory logFactory) {
57 for (Map.Entry<String, LogWrapper> entry : _logWrappers.entrySet()) {
58 String name = entry.getKey();
59
60 LogWrapper logWrapper = entry.getValue();
61
62 logWrapper.setLog(logFactory.getLog(name));
63 }
64
65
69 _logFactory = logFactory;
70 }
71
72 private static volatile LogFactory _logFactory = new Jdk14LogFactoryImpl();
73 private static final ConcurrentMap<String, LogWrapper> _logWrappers =
74 new ConcurrentHashMap<String, LogWrapper>();
75
76 }