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 }