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