1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.log4j;
18
19 import org.apache.log4j.spi.LoggerFactory;
20
21 import java.util.concurrent.ConcurrentHashMap;
22 import java.util.concurrent.ConcurrentMap;
23
24
25
26
27
28
29
30
31
32
33 class Log4jLoggerFactory {
34
35
36 private static final ConcurrentMap<String, Logger> log4jLoggers = new ConcurrentHashMap<>();
37
38 public static Logger getLogger(String name) {
39 org.apache.log4j.Logger instance = log4jLoggers.get(name);
40 if (instance != null) {
41 return instance;
42 } else {
43 Logger newInstance = new Logger(name);
44 Logger oldInstance = log4jLoggers.putIfAbsent(name, newInstance);
45 return oldInstance == null ? newInstance : oldInstance;
46 }
47 }
48
49 public static Logger getLogger(String name, LoggerFactory loggerFactory) {
50 org.apache.log4j.Logger instance = log4jLoggers.get(name);
51 if (instance != null) {
52 return instance;
53 } else {
54 Logger newInstance = loggerFactory.makeNewLoggerInstance(name);
55 Logger oldInstance = log4jLoggers.putIfAbsent(name, newInstance);
56 return oldInstance == null ? newInstance : oldInstance;
57 }
58 }
59 }