01: /*
02: * Copyright (c) 2004-2007 QOS.ch
03: * All rights reserved.
04: *
05: * Permission is hereby granted, free of charge, to any person obtaining
06: * a copy of this software and associated documentation files (the
07: * "Software"), to deal in the Software without restriction, including
08: * without limitation the rights to use, copy, modify, merge, publish,
09: * distribute, sublicense, and/or sell copies of the Software, and to
10: * permit persons to whom the Software is furnished to do so, subject to
11: * the following conditions:
12: *
13: * The above copyright notice and this permission notice shall be
14: * included in all copies or substantial portions of the Software.
15: *
16: * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17: * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18: * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19: * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20: * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21: * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22: * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23: */
24:
25: package org.slf4j;
26:
27: import org.slf4j.helpers.Util;
28: import org.slf4j.impl.StaticMarkerBinder;
29:
30: /**
31: * MarkerFactory is a utility class producing {@link Marker} instances as
32: * appropriate for the logging system currently in use.
33: *
34: * <p>
35: * This class is essentially implemented as a wrapper around an
36: * {@link IMarkerFactory} instance bound at compile time.
37: *
38: * <p>
39: * Please note that all methods in this class are static.
40: *
41: * @author Ceki Gülcü
42: */
43: public class MarkerFactory {
44: static IMarkerFactory markerFactory;
45:
46: private MarkerFactory() {
47: }
48:
49: static {
50: try {
51: markerFactory = StaticMarkerBinder.SINGLETON
52: .getMarkerFactory();
53: } catch (Exception e) {
54: // we should never get here
55: Util.reportFailure(
56: "Could not instantiate instance of class ["
57: + StaticMarkerBinder.SINGLETON
58: .getMarkerFactoryClassStr() + "]",
59: e);
60: }
61: }
62:
63: /**
64: * Return a Marker instance as specified by the name parameter using the
65: * previously bound {@link IMarkerFactory}instance.
66: *
67: * @param name
68: * The name of the {@link Marker} object to return.
69: * @return marker
70: */
71: public static Marker getMarker(String name) {
72: return markerFactory.getMarker(name);
73: }
74:
75: /**
76: * Return the {@link IMarkerFactory}instance in use.
77: *
78: * <p>The IMarkerFactory instance is usually bound with this class at
79: * compile time.
80: *
81: * @return the IMarkerFactory instance in use
82: */
83: public static IMarkerFactory getIMarkerFactory() {
84: return markerFactory;
85: }
86: }
|