[SDC-29] Amdocs OnBoard 1707 initial commit.
[sdc.git] / common / openecomp-logging-lib / openecomp-logging-api / src / main / java / org / openecomp / core / 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.core.logging.api;
22
23 /**
24  * <a>Factory to hide a concrete, framework-specific implementation of logger creation.</a> <p>The
25  * service used by this factory must implement {@link LoggerCreationService}. If no implementation
26  * has been configured or could not be instantiated, a <b>no-op logger</b> will be used, and <b>no
27  * events</b> will be logged. This is done to prevent recursion if attempts are being made to log
28  * exceptions that resulted from logger initialization. </p>
29  *
30  * @see BaseFactory
31  * @see LoggerCreationService
32  */
33 @SuppressWarnings("ThrowableInstanceNeverThrown")
34 public class LoggerFactory extends BaseFactory {
35
36   private static final LoggerCreationService SERVICE;
37
38   static {
39
40     LoggerCreationService service;
41
42     try {
43       service = locateService(LoggerCreationService.class);
44     } catch (Throwable throwable) {
45       new RuntimeException("Failed to instantiate logger factory", throwable).printStackTrace();
46       // use the no-op service to prevent recursion in case of an attempt to log an exception as a
47       // result of a logger initialization error
48       service = new NoOpLoggerCreationService();
49     }
50
51     SERVICE = service;
52   }
53
54   public static Logger getLogger(String clazzName) {
55     return SERVICE.getLogger(clazzName);
56   }
57
58   public static Logger getLogger(Class<?> clazz) {
59     return SERVICE.getLogger(clazz);
60   }
61
62   private static class NoOpLoggerCreationService implements LoggerCreationService {
63
64     private static final Logger NO_OP_LOGGER = new Logger() {
65
66       @Override
67       public String getName() {
68         return "No-Op Logger";
69       }
70
71       @Override
72       public boolean isMetricsEnabled() {
73         return false;
74       }
75
76       @Override
77       public void metrics(String msg) {
78       }
79
80       @Override
81       public void metrics(String msg, Object arg) {
82       }
83
84       @Override
85       public void metrics(String msg, Object arg1, Object arg2) {
86       }
87
88       @Override
89       public void metrics(String msg, Object... arguments) {
90       }
91
92       @Override
93       public void metrics(String msg, Throwable throwable) {
94       }
95
96       @Override
97       public boolean isAuditEnabled() {
98         return false;
99       }
100
101       @Override
102       public void audit(String msg) {
103       }
104
105       @Override
106       public void audit(String msg, Object arg) {
107       }
108
109       @Override
110       public void audit(String msg, Object arg1, Object arg2) {
111       }
112
113       @Override
114       public void audit(String msg, Object... arguments) {
115       }
116
117       @Override
118       public void audit(String msg, Throwable throwable) {
119       }
120
121       @Override
122       public boolean isDebugEnabled() {
123         return false;
124       }
125
126       @Override
127       public void debug(String msg) {
128       }
129
130       @Override
131       public void debug(String msg, Object arg) {
132       }
133
134       @Override
135       public void debug(String msg, Object arg1, Object arg2) {
136       }
137
138       @Override
139       public void debug(String msg, Object... arguments) {
140       }
141
142       @Override
143       public void debug(String msg, Throwable throwable) {
144       }
145
146       @Override
147       public boolean isInfoEnabled() {
148         return false;
149       }
150
151       @Override
152       public void info(String msg) {
153       }
154
155       @Override
156       public void info(String msg, Object arg) {
157       }
158
159       @Override
160       public void info(String msg, Object arg1, Object arg2) {
161       }
162
163       @Override
164       public void info(String msg, Object... arguments) {
165       }
166
167       @Override
168       public void info(String msg, Throwable throwable) {
169       }
170
171       @Override
172       public boolean isWarnEnabled() {
173         return false;
174       }
175
176       @Override
177       public void warn(String msg) {
178       }
179
180       @Override
181       public void warn(String msg, Object arg) {
182       }
183
184       @Override
185       public void warn(String msg, Object... arguments) {
186       }
187
188       @Override
189       public void warn(String msg, Object arg1, Object arg2) {
190       }
191
192       @Override
193       public void warn(String msg, Throwable throwable) {
194       }
195
196       @Override
197       public boolean isErrorEnabled() {
198         return false;
199       }
200
201       @Override
202       public void error(String msg) {
203       }
204
205       @Override
206       public void error(String msg, Object arg) {
207       }
208
209       @Override
210       public void error(String msg, Object arg1, Object arg2) {
211       }
212
213       @Override
214       public void error(String msg, Object... arguments) {
215       }
216
217       @Override
218       public void error(String msg, Throwable throwable) {
219       }
220     };
221
222     @Override
223     public Logger getLogger(String className) {
224       return NO_OP_LOGGER;
225     }
226
227     @Override
228     public Logger getLogger(Class<?> clazz) {
229       return NO_OP_LOGGER;
230     }
231   }
232 }