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.JMSTopicManager;
28
29
30
31
32 @Plugin(name = "JMSTopic", type = "Core", elementType = "appender", printObject = true)
33 public final class JMSTopicAppender extends AppenderBase {
34
35 private final JMSTopicManager manager;
36
37 private JMSTopicAppender(String name, Filter filter, Layout layout, JMSTopicManager manager,
38 boolean handleExceptions) {
39 super(name, filter, layout, handleExceptions);
40 this.manager = manager;
41 }
42
43
44
45
46
47
48 public void append(LogEvent event) {
49 try {
50 manager.send(getLayout().formatAs(event));
51 } catch (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 @PluginFactory
75 public static JMSTopicAppender createAppender(@PluginAttr("factoryName") String factoryName,
76 @PluginAttr("providerURL") String providerURL,
77 @PluginAttr("urlPkgPrefixes") String urlPkgPrefixes,
78 @PluginAttr("securityPrincipalName") String securityPrincipalName,
79 @PluginAttr("securityCredentials") String securityCredentials,
80 @PluginAttr("factoryBindingName") String factoryBindingName,
81 @PluginAttr("topicBindingName") String topicBindingName,
82 @PluginAttr("userName") String userName,
83 @PluginAttr("password") String password,
84 @PluginElement("layout") Layout layout,
85 @PluginElement("filters") Filter filter,
86 @PluginAttr("suppressExceptions") String suppress) {
87
88 String name = "JMSTopic" + factoryBindingName + "." + topicBindingName;
89 boolean handleExceptions = suppress == null ? true : Boolean.valueOf(suppress);
90 JMSTopicManager manager = JMSTopicManager.getJMSTopicManager(factoryName, providerURL, urlPkgPrefixes,
91 securityPrincipalName, securityCredentials, factoryBindingName, topicBindingName, userName, password);
92 if (manager == null) {
93 return null;
94 }
95 if (layout == null) {
96 layout = SerializedLayout.createLayout();
97 }
98 return new JMSTopicAppender(name, filter, layout, manager, handleExceptions);
99 }
100 }