1 /*
2 (C) Copyright IBM Corp. 2006, 2012
3
4 THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE
5 ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE
6 CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT.
7
8 You can obtain a current copy of the Eclipse Public License from
9 http://www.opensource.org/licenses/eclipse-1.0.php
10
11 @author : Alexander Wolf-Reber, IBM, a.wolf-reber@de.ibm.com
12 *
13 * Change History
14 * Flag Date Prog Description
15 *-------------------------------------------------------------------------------
16 * 1565892 2006-11-13 lupusalex Make SBLIM client JSR48 compliant
17 * 2003590 2008-06-30 blaschke-oss Change licensing from CPL to EPL
18 * 2524131 2009-01-21 raman_arora Upgrade client to JDK 1.5 (Phase 1)
19 * 2531371 2009-02-10 raman_arora Upgrade client to JDK 1.5 (Phase 2)
20 * 3554738 2012-08-16 blaschke-oss dump CIM xml by LogAndTraceBroker.trace()
21 */
22
23 package org.metricshub.wbem.sblim.cimclient;
24
25 /*-
26 * ╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲
27 * WBEM Java Client
28 * ჻჻჻჻჻჻
29 * Copyright 2023 - 2025 MetricsHub
30 * ჻჻჻჻჻჻
31 * Licensed under the Apache License, Version 2.0 (the "License");
32 * you may not use this file except in compliance with the License.
33 * You may obtain a copy of the License at
34 *
35 * http://www.apache.org/licenses/LICENSE-2.0
36 *
37 * Unless required by applicable law or agreed to in writing, software
38 * distributed under the License is distributed on an "AS IS" BASIS,
39 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
40 * See the License for the specific language governing permissions and
41 * limitations under the License.
42 * ╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱
43 */
44
45 import java.io.OutputStream;
46 import java.util.Collections;
47 import java.util.List;
48 import org.metricshub.wbem.sblim.cimclient.internal.logging.LogAndTraceBroker;
49
50 /**
51 * Class LogAndTraceManager provides the means to register/unregister log and
52 * trace listeners. It is the entry point for application that want to redirect
53 * the CIM Client's log and trace messages into their own logging framework.
54 *
55 */
56 public class LogAndTraceManager {
57 private static LogAndTraceManager cManager = new LogAndTraceManager();
58
59 /**
60 * Returns the singleton instance of the manager.
61 *
62 * @return The manager
63 */
64 public static LogAndTraceManager getManager() {
65 return cManager;
66 }
67
68 private LogAndTraceManager() {
69 super();
70 }
71
72 /**
73 * Adds a listener for log messages. The listener will be notified of any
74 * log event.
75 *
76 * @param pListener
77 * The listener
78 */
79 public void addLogListener(LogListener pListener) {
80 LogAndTraceBroker.getBroker().addLogListener(pListener);
81 }
82
83 /**
84 * Remove a listener. This listener will not be notified of log events
85 * anymore.
86 *
87 * @param pListener
88 * The listener
89 */
90 public void removeLogListener(LogListener pListener) {
91 LogAndTraceBroker.getBroker().removeLogListener(pListener);
92 }
93
94 /**
95 * Removes all listeners. Caution: This will also remove the internal
96 * console and file loggers.
97 */
98 public void clearLogListeners() {
99 LogAndTraceBroker.getBroker().clearLogListeners();
100 }
101
102 /**
103 * Gets the registered log listeners including the internal console and file
104 * loggers.
105 *
106 * @return An unmodifiable list of listeners
107 */
108 public List<LogListener> getLogListeners() {
109 return Collections.unmodifiableList(LogAndTraceBroker.getBroker().getLogListeners());
110 }
111
112 /**
113 * Adds a listener for log messages. The listener will be notified of any
114 * trace event.
115 *
116 * @param pListener
117 * The listener
118 */
119 public void addTraceListener(TraceListener pListener) {
120 LogAndTraceBroker.getBroker().addTraceListener(pListener);
121 }
122
123 /**
124 * Removes a listener. This listener will not be notified of trace events
125 * anymore.
126 *
127 * @param pListener
128 * The listener
129 */
130 public void removeTraceListener(TraceListener pListener) {
131 LogAndTraceBroker.getBroker().removeTraceListener(pListener);
132 }
133
134 /**
135 * Removes all listeners. Caution this will also remove the internal trace
136 * file listener.
137 */
138 public void clearTraceListeners() {
139 LogAndTraceBroker.getBroker().clearTraceListeners();
140 }
141
142 /**
143 * Gets the registered trace listeners including the internal console and
144 * file loggers.
145 *
146 * @return A unmodifiable list of listeners
147 */
148 public List<TraceListener> getTraceListeners() {
149 return Collections.unmodifiableList(LogAndTraceBroker.getBroker().getTraceListeners());
150 }
151
152 /**
153 * Adds a listener for CIM-XML trace messages. The listener will be notified
154 * of any CIM-XML trace event.
155 *
156 * @param pListener
157 * The listener
158 */
159 public void addCIMXMLTraceListener(CIMXMLTraceListener pListener) {
160 LogAndTraceBroker.getBroker().addCIMXMLTraceListener(pListener);
161 }
162
163 /**
164 * Removes a CIM-XML trace listener. This listener will not be notified of
165 * CIM-XML trace events anymore.
166 *
167 * @param pListener
168 * The listener
169 */
170 public void removeCIMXMLTraceListener(CIMXMLTraceListener pListener) {
171 LogAndTraceBroker.getBroker().removeCIMXMLTraceListener(pListener);
172 }
173
174 /**
175 * Removes all CIM-XML trace listeners.
176 */
177 public void clearCIMXMLTraceListeners() {
178 LogAndTraceBroker.getBroker().clearCIMXMLTraceListeners();
179 }
180
181 /**
182 * Gets the registered CIM-XML trace listeners.
183 *
184 * @return A unmodifiable list of listeners
185 */
186 public List<CIMXMLTraceListener> getCIMXMLTraceListeners() {
187 return Collections.unmodifiableList(LogAndTraceBroker.getBroker().getCIMXMLTraceListeners());
188 }
189
190 /**
191 * Returns the stream to which the CIM-XML traces are sent. A value of
192 * <code>null</code> means that tracing is effectively disabled. Otherwise
193 * the CIM-XML tracing can be activated either globally or per-connection
194 * via the "sblim.wbem.cimxmlTracing" configuration property.
195 *
196 * @return The CIM-XML trace stream
197 */
198 public OutputStream getXmlTraceStream() {
199 return LogAndTraceBroker.getBroker().getXmlTraceStream();
200 }
201
202 /**
203 * Sets the stream to which the CIM-XML traces are sent. A value of
204 * <code>null</code> means that tracing is effectively disabled. Otherwise
205 * the CIM-XML tracing can be activated either globally or per-connection
206 * via the "sblim.wbem.cimxmlTracing" configuration property.
207 *
208 * @param pStream
209 * The CIM-XML trace stream
210 */
211 public void setXmlTraceStream(OutputStream pStream) {
212 LogAndTraceBroker.getBroker().setXmlTraceStream(pStream);
213 }
214 }