1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.core.appender;
18
19 import org.apache.logging.log4j.core.Filter;
20 import org.apache.logging.log4j.core.Layout;
21 import org.apache.logging.log4j.core.LogEvent;
22 import org.apache.logging.log4j.core.config.plugins.Plugin;
23 import org.apache.logging.log4j.core.config.plugins.PluginAttr;
24 import org.apache.logging.log4j.core.config.plugins.PluginElement;
25 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
26 import org.apache.logging.log4j.core.layout.SerializedLayout;
27 import org.apache.logging.log4j.core.net.JMSQueueManager;
28
29
30
31
32 @Plugin(name = "JMSQueue", type = "Core", elementType = "appender", printObject = true)
33 public final class JMSQueueAppender extends AbstractAppender {
34
35 private final JMSQueueManager manager;
36
37 private JMSQueueAppender(final String name, final Filter filter, final Layout layout, final JMSQueueManager manager,
38 final boolean handleExceptions) {
39 super(name, filter, layout, handleExceptions);
40 this.manager = manager;
41 }
42
43
44
45
46
47
48 public void append(final LogEvent event) {
49 try {
50 manager.send(getLayout().toSerializable(event));
51 } catch (final Exception ex) {
52 throw new AppenderRuntimeException(ex);
53 }
54 }
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75 @PluginFactory
76 public static JMSQueueAppender createAppender(
77 @PluginAttr("name") final String name,
78 @PluginAttr("factoryName") final String factoryName,
79 @PluginAttr("providerURL") final String providerURL,
80 @PluginAttr("urlPkgPrefixes") final String urlPkgPrefixes,
81 @PluginAttr("securityPrincipalName") final String securityPrincipalName,
82 @PluginAttr("securityCredentials") final String securityCredentials,
83 @PluginAttr("factoryBindingName") final String factoryBindingName,
84 @PluginAttr("queueBindingName") final String queueBindingName,
85 @PluginAttr("userName") final String userName,
86 @PluginAttr("password") final String password,
87 @PluginElement("layout") Layout layout,
88 @PluginElement("filter") final Filter filter,
89 @PluginAttr("suppressExceptions") final String suppress) {
90 if (name == null) {
91 LOGGER.error("No name provided for JMSQueueAppender");
92 return null;
93 }
94 final boolean handleExceptions = suppress == null ? true : Boolean.valueOf(suppress);
95 final JMSQueueManager manager = JMSQueueManager.getJMSQueueManager(factoryName, providerURL, urlPkgPrefixes,
96 securityPrincipalName, securityCredentials, factoryBindingName, queueBindingName, userName, password);
97 if (manager == null) {
98 return null;
99 }
100 if (layout == null) {
101 layout = SerializedLayout.createLayout();
102 }
103 return new JMSQueueAppender(name, filter, layout, manager, handleExceptions);
104 }
105 }