Corrected copyright header
[sdc.git] / openecomp-be / lib / openecomp-sdc-logging-lib / openecomp-sdc-logging-api / src / main / java / org / openecomp / sdc / logging / api / LoggerFactory.java
1 /*
2  * Copyright © 2016-2017 European Support Limited
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  * 
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  * 
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package org.openecomp.sdc.logging.api;
18
19
20 /**
21  * <a>Factory to hide a concrete, framework-specific implementation of logger creation.</a>
22  * <p>The service used by this factory must implement {@link LoggerCreationService}. If no
23  * implementation has been configured or could not be instantiated, a <b>no-op logger</b> will be
24  * used, and <b>no events</b> will be logged. This is done to prevent recursion if attempts are
25  * being made to log exceptions that resulted from logger initialization. </p>
26  *
27  * @author evitaliy
28  * @see BaseFactory
29  * @see LoggerCreationService
30  * @since 13/09/2016.
31  */
32 @SuppressWarnings("ThrowableInstanceNeverThrown")
33 public class LoggerFactory extends BaseFactory {
34
35   private static final LoggerCreationService SERVICE;
36
37   static {
38     LoggerCreationService service;
39
40     try {
41       service = locateService(LoggerCreationService.class);
42     } catch (Exception ex) {
43       new RuntimeException("Failed to instantiate logger factory", ex).printStackTrace();
44       // use the no-op service to prevent recursion in case of an attempt to log an exception as a
45       // result of a logger initialization error
46       service = new NoOpLoggerCreationService();
47     }
48
49     SERVICE = service;
50   }
51
52   public static Logger getLogger(String clazzName) {
53     return SERVICE.getLogger(clazzName);
54   }
55
56   public static Logger getLogger(Class<?> clazz) {
57     return SERVICE.getLogger(clazz);
58   }
59
60   private static class NoOpLoggerCreationService implements LoggerCreationService {
61
62     private static final Logger NO_OP_LOGGER = new Logger() {
63
64       @Override
65       public String getName() {
66         return "No-Op Logger";
67       }
68
69       @Override
70       public boolean isMetricsEnabled() {
71         return false;
72       }
73
74       @Override
75       public void metrics(String msg) {
76       }
77
78       @Override
79       public void metrics(String msg, Object arg) {
80       }
81
82       @Override
83       public void metrics(String msg, Object arg1, Object arg2) {
84       }
85
86       @Override
87       public void metrics(String msg, Object... arguments) {
88       }
89
90       @Override
91       public void metrics(String msg, Throwable t) {
92       }
93
94       @Override
95       public boolean isAuditEnabled() {
96         return false;
97       }
98
99       @Override
100       public void audit(String msg) {
101       }
102
103       @Override
104       public void audit(String msg, Object arg) {
105       }
106
107       @Override
108       public void audit(String msg, Object arg1, Object arg2) {
109       }
110
111       @Override
112       public void audit(String msg, Object... arguments) {
113       }
114
115       @Override
116       public void audit(String msg, Throwable t) {
117       }
118
119       @Override
120       public boolean isDebugEnabled() {
121         return false;
122       }
123
124       @Override
125       public void debug(String msg) {
126       }
127
128       @Override
129       public void debug(String msg, Object arg) {
130       }
131
132       @Override
133       public void debug(String msg, Object arg1, Object arg2) {
134       }
135
136       @Override
137       public void debug(String msg, Object... arguments) {
138       }
139
140       @Override
141       public void debug(String msg, Throwable t) {
142       }
143
144       @Override
145       public boolean isInfoEnabled() {
146         return false;
147       }
148
149       @Override
150       public void info(String msg) {
151       }
152
153       @Override
154       public void info(String msg, Object arg) {
155       }
156
157       @Override
158       public void info(String msg, Object arg1, Object arg2) {
159       }
160
161       @Override
162       public void info(String msg, Object... arguments) {
163       }
164
165       @Override
166       public void info(String msg, Throwable t) {
167       }
168
169       @Override
170       public boolean isWarnEnabled() {
171         return false;
172       }
173
174       @Override
175       public void warn(String msg) {
176       }
177
178       @Override
179       public void warn(String msg, Object arg) {
180       }
181
182       @Override
183       public void warn(String msg, Object... arguments) {
184       }
185
186       @Override
187       public void warn(String msg, Object arg1, Object arg2) {
188       }
189
190       @Override
191       public void warn(String msg, Throwable t) {
192       }
193
194       @Override
195       public boolean isErrorEnabled() {
196         return false;
197       }
198
199       @Override
200       public void error(String msg) {
201       }
202
203       @Override
204       public void error(String msg, Object arg) {
205       }
206
207       @Override
208       public void error(String msg, Object arg1, Object arg2) {
209       }
210
211       @Override
212       public void error(String msg, Object... arguments) {
213       }
214
215       @Override
216       public void error(String msg, Throwable t) {
217       }
218     };
219
220     @Override
221     public Logger getLogger(String className) {
222       return NO_OP_LOGGER;
223     }
224
225     @Override
226     public Logger getLogger(Class<?> clazz) {
227       return NO_OP_LOGGER;
228     }
229   }
230 }