class passed to MdcLogger() is compared by name
[sdc.git] / common-app-logging / src / main / java / org / openecomp / sdc / common / log / elements / LoggerFactory.java
1 package org.openecomp.sdc.common.log.elements;
2
3 import org.slf4j.Logger;
4
5 /**
6  * Created by dd4296 on 12/26/2017.
7  * this factory helps decouple the classes for Stopwatch and LogFieldsMdcHandler from
8  * the EcompLogger classes
9  */
10 public class LoggerFactory {
11
12     private LoggerFactory() {
13     }
14
15     @SuppressWarnings("unchecked")
16     public static <T, V> V getLogger(Class<T> type, Logger logger) {
17
18         if (type.isAssignableFrom(LoggerAudit.class)) {
19             return (V) new LoggerAudit(new LogFieldsMdcHandler(), logger);
20         }
21
22         if (type.isAssignableFrom(LoggerDebug.class)) {
23             return (V) new LoggerDebug(new LogFieldsMdcHandler(), logger);
24         }
25
26         if (type.isAssignableFrom(LoggerMetric.class)) {
27             return (V) new LoggerMetric(new LogFieldsMdcHandler(), logger);
28         }
29
30         if (type.isAssignableFrom(LoggerError.class)) {
31             return (V) new LoggerError(new LogFieldsMdcHandler(), logger);
32         }
33
34         return null;
35     }
36
37     @SuppressWarnings("unchecked")
38     public static <T, V> V getMdcLogger(Class<T> type, Logger logger) {
39
40         if (type.isAssignableFrom(LoggerAudit.class)) {
41             return (V) new LoggerAudit(LogFieldsMdcHandler.getInstance(), logger);
42         }
43
44         if (type.isAssignableFrom(LoggerDebug.class)) {
45             return (V) new LoggerDebug(LogFieldsMdcHandler.getInstance(), logger);
46         }
47
48         if (type.isAssignableFrom(LoggerMetric.class)) {
49             return (V) new LoggerMetric(LogFieldsMdcHandler.getInstance(), logger);
50         }
51
52         if (type.isAssignableFrom(LoggerError.class)) {
53             return (V) new LoggerError(LogFieldsMdcHandler.getInstance(), logger);
54         }
55
56         if (type.isAssignableFrom(LoggerSupportability.class)) {
57             return (V) new LoggerSupportability(LogFieldsMdcHandler.getInstance(), logger);
58         }
59
60         return null;
61     }
62 }