1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package net.sourceforge.acelogger.factory;
16
17 import java.util.ArrayList;
18 import java.util.HashMap;
19 import java.util.List;
20 import java.util.Map;
21
22 import net.sourceforge.acelogger.appender.Appender;
23 import net.sourceforge.acelogger.constants.AppenderConstants;
24 import net.sourceforge.acelogger.execution.LogController;
25
26
27
28
29
30
31
32
33 public final class AppenderFactory {
34
35
36
37
38 private static final AppenderFactory INSTANCE = new AppenderFactory();
39
40
41
42
43 private Appender defaultAppender;
44
45
46
47
48 private final Map<String, Appender> registeredAppenders;
49
50
51
52
53
54
55 private AppenderFactory() {
56 registeredAppenders = new HashMap<String, Appender>();
57 defaultAppender = AppenderConstants.EMPTY;
58 }
59
60
61
62
63
64
65
66
67
68
69
70 public static Appender getAppender(String identifier) {
71 LogController.ensureInitialization();
72 Appender intendedLogger = INSTANCE.registeredAppenders.get(identifier);
73 if (intendedLogger == null) {
74 int lastDotIndex = identifier.lastIndexOf('.');
75 if (lastDotIndex > 0) {
76 intendedLogger = getAppender(identifier.substring(0, lastDotIndex));
77 } else {
78 intendedLogger = INSTANCE.defaultAppender;
79 }
80 }
81 return intendedLogger;
82 }
83
84
85
86
87
88
89
90
91
92
93 public static Appender setDefaultAppender(Appender defaultAppender) {
94 LogController.ensureInitialization();
95 Appender previous = INSTANCE.defaultAppender;
96 if (defaultAppender != null) {
97 INSTANCE.defaultAppender = defaultAppender;
98 }
99 return previous;
100 }
101
102
103
104
105
106
107
108
109 public static Appender getDefaultAppender() {
110 LogController.ensureInitialization();
111 return INSTANCE.defaultAppender;
112 }
113
114
115
116
117
118
119
120 public static List<Appender> getRegisteredAppenders() {
121 LogController.ensureInitialization();
122 return new ArrayList<Appender>(INSTANCE.registeredAppenders.values());
123 }
124
125
126
127
128
129
130
131
132
133
134
135
136 public static Appender registerAppender(Appender appender) {
137 LogController.ensureInitialization();
138 Appender intendedAppender = null;
139 if (appender != null) {
140 intendedAppender = INSTANCE.registeredAppenders.put(appender.getIdentifier(), appender);
141 }
142 if (intendedAppender == null) {
143 intendedAppender = INSTANCE.defaultAppender;
144 }
145 return intendedAppender;
146 }
147 }