##### Coverage Report - com.ctrip.framework.apollo.common.customize.LoggingCustomizer

Classes in this File | Line Coverage | Branch Coverage | Complexity
LoggingCustomizer |
0% | 0/31
0% | 0/4
| 2.25;2.25

1 |  |
     package com.ctrip.framework.apollo.common.customize;
2 |  |
3 |  |
     import com.google.common.base.Strings;
4 |  |
5 |  |
     import com.ctrip.framework.foundation.Foundation;
6 |  |
     import com.dianping.cat.Cat;
7 |  |
8 |  |
     import org.slf4j.Logger;
9 |  |
     import org.slf4j.LoggerFactory;
10 |  |
     import org.springframework.beans.factory.InitializingBean;
11 |  |
     import org.springframework.util.ClassUtils;
12 |  |
     import org.springframework.util.ReflectionUtils;
13 |  |
14 |  |
15 |  |
     import ch.qos.logback.classic.LoggerContext;
16 |  |
     import ch.qos.logback.core.Appender;
17 |  |
18 |  |
     /**
19 |  |
      * clogging config.only used in ctrip
20 |  |
      * @author Jason Song(song_s@ctrip.com)
21 |  |
      */
22 | 0 |
     public abstract class LoggingCustomizer implements InitializingBean {
23 | 0 |
       private static final Logger logger = LoggerFactory.getLogger(LoggingCustomizer.class);
24 |  |
       private static final String cLoggingAppenderClass =
25 |  |
           "com.ctrip.framework.clogging.agent.appender.CLoggingAppender";
26 | 0 |
       private static boolean cLoggingAppenderPresent =
27 | 0 |
           ClassUtils.isPresent(cLoggingAppenderClass, LoggingCustomizer.class.getClassLoader());
28 |  |
29 |  |
       @Override
30 |  |
       public void afterPropertiesSet() {
31 | 0 |
         if (!cLoggingAppenderPresent) {
32 | 0 |
           return;
33 |  |
         }
34 |  |
35 |  |
         try {
36 | 0 |
           tryConfigCLogging();
37 | 0 |
         } catch (Throwable ex) {
38 | 0 |
           logger.error("Config CLogging failed", ex);
39 | 0 |
           Cat.logError(ex);
40 | 0 |
         }
41 |  |
42 | 0 |
       }
43 |  |
44 |  |
       private void tryConfigCLogging() throws Exception {
45 | 0 |
         String appId = Foundation.app().getAppId();
46 | 0 |
         if (Strings.isNullOrEmpty(appId)) {
47 | 0 |
           logger.warn("App id is null or empty!");
48 | 0 |
           return;
49 |  |
         }
50 |  |
51 |  |
52 | 0 |
         LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
53 | 0 |
         Class clazz = Class.forName(cLoggingAppenderClass);
54 | 0 |
         Appender cLoggingAppender = (Appender) clazz.newInstance();
55 |  |
56 | 0 |
         ReflectionUtils.findMethod(clazz, "setAppId", String.class).invoke(cLoggingAppender, appId);
57 | 0 |
         ReflectionUtils.findMethod(clazz, "setServerIp", String.class)
58 | 0 |
             .invoke(cLoggingAppender, cloggingUrl());
59 | 0 |
         ReflectionUtils.findMethod(clazz, "setServerPort", int.class)
60 | 0 |
             .invoke(cLoggingAppender, Integer.parseInt(cloggingPort()));
61 |  |
62 | 0 |
         cLoggingAppender.setName("CentralLogging");
63 | 0 |
         cLoggingAppender.setContext(loggerContext);
64 | 0 |
         cLoggingAppender.start();
65 |  |
66 | 0 |
         ch.qos.logback.classic.Logger logger =
67 | 0 |
             (ch.qos.logback.classic.Logger) LoggerFactory.getLogger("root");
68 | 0 |
         logger.addAppender(cLoggingAppender);
69 |  |
70 | 0 |
       }
71 |  |
72 |  |
       /**
73 |  |
        * clogging server url
74 |  |
        * @return
75 |  |
        */
76 |  |
       protected abstract String cloggingUrl();
77 |  |
78 |  |
       /**
79 |  |
        * clogging server port
80 |  |
        * @return
81 |  |
        */
82 |  |
       protected abstract String cloggingPort();
83 |  |
84 |  |
85 |  |
     }