1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.core.config;
18
19 import java.util.concurrent.ConcurrentHashMap;
20 import java.util.concurrent.ConcurrentMap;
21
22 import org.apache.logging.log4j.core.config.plugins.Plugin;
23 import org.apache.logging.log4j.core.config.plugins.PluginElement;
24 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
25
26
27
28
29 @Plugin(name = "loggers", category = Node.CATEGORY)
30 public final class LoggersPlugin {
31
32 private LoggersPlugin() {
33 }
34
35
36
37
38
39
40 @PluginFactory
41 public static Loggers createLoggers(@PluginElement("Loggers") final LoggerConfig[] loggers) {
42 final ConcurrentMap<String, LoggerConfig> loggerMap = new ConcurrentHashMap<>();
43 LoggerConfig root = null;
44
45 for (final LoggerConfig logger : loggers) {
46 if (logger != null) {
47 if (logger.getName().isEmpty()) {
48 if (root != null) {
49 throw new IllegalStateException("Configuration has multiple root loggers. There can be only one.");
50 }
51 root = logger;
52 }
53 loggerMap.put(logger.getName(), logger);
54 }
55 }
56
57 return new Loggers(loggerMap, root);
58 }
59 }