1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.core.lookup;
18
19 import java.util.MissingResourceException;
20 import java.util.ResourceBundle;
21
22 import org.apache.logging.log4j.Logger;
23 import org.apache.logging.log4j.Marker;
24 import org.apache.logging.log4j.MarkerManager;
25 import org.apache.logging.log4j.core.LogEvent;
26 import org.apache.logging.log4j.core.config.plugins.Plugin;
27 import org.apache.logging.log4j.status.StatusLogger;
28
29
30
31
32 @Plugin(name = "bundle", category = StrLookup.CATEGORY)
33 public class ResourceBundleLookup extends AbstractLookup {
34
35 private static final Logger LOGGER = StatusLogger.getLogger();
36 private static final Marker LOOKUP = MarkerManager.getMarker("LOOKUP");
37
38
39
40
41
42
43
44
45
46
47
48
49 @Override
50 public String lookup(final LogEvent event, final String key) {
51 if (key == null) {
52 return null;
53 }
54 final String[] keys = key.split(":");
55 final int keyLen = keys.length;
56 if (keyLen != 2) {
57 LOGGER.warn(LOOKUP, "Bad ResourceBundle key format [{}]. Expected format is BundleName:KeyName.", key);
58 return null;
59 }
60 final String bundleName = keys[0];
61 final String bundleKey = keys[1];
62 try {
63
64 return ResourceBundle.getBundle(bundleName).getString(bundleKey);
65 } catch (final MissingResourceException e) {
66 LOGGER.warn(LOOKUP, "Error looking up ResourceBundle [{}].", bundleName, e);
67 return null;
68 }
69 }
70 }