Просмотр исходного кода

1.日志格式化;2.日志适配到云平台格式

airhead 8 лет назад
Родитель
Сommit
d2c61cb634
19 измененных файлов с 363 добавлено и 183 удалено
  1. 36 0
      hos-agent/pom.xml
  2. 1 32
      hos-agent/src/main/java/com/yihu/hos/agent/HosAgentApplication.java
  3. 27 0
      hos-agent/src/main/java/com/yihu/hos/agent/camel/aggregator/EHRLogAggregator.java
  4. 13 0
      hos-agent/src/main/java/com/yihu/hos/agent/camel/expression/EHRLogExpression.java
  5. 65 0
      hos-agent/src/main/java/com/yihu/hos/agent/camel/processor/EHRLogProcesser.java
  6. 42 0
      hos-agent/src/main/java/com/yihu/hos/agent/camel/route/EHRLogRouterBuilder.java
  7. 10 9
      hos-broker/src/main/java/com/yihu/hos/broker/common/camelrouter/BusinessLogRouter.java
  8. 0 19
      hos-agent/src/main/java/com/yihu/hos/agent/camelrouter/AdminProxyRouter.java
  9. 0 34
      hos-agent/src/main/java/com/yihu/hos/agent/camelrouter/GatewayProcessor.java
  10. 37 12
      hos-agent/src/main/java/com/yihu/hos/agent/configuration/AgentConfiguration.java
  11. 3 3
      hos-broker/src/main/java/com/yihu/hos/broker/models/BusinessLog.java
  12. 14 14
      hos-broker/src/main/java/com/yihu/hos/broker/services/BusinessLogService.java
  13. 14 1
      hos-agent/src/main/resources/application.yml
  14. 40 0
      hos-broker/src/main/java/com/yihu/hos/broker/common/log/TracerFormatter.java
  15. 15 11
      hos-broker/src/main/java/com/yihu/hos/broker/services/camel/CamelStartBoot.java
  16. 6 6
      hos-camel2/src/main/java/camel/gateway/route/GatewayRouterBuilder.java
  17. 0 15
      hos-camel2/src/main/java/camel/gatewaylog/processor/LogProcesser.java
  18. 0 27
      hos-camel2/src/main/java/camel/gatewaylog/route/LogRouterBuilder.java
  19. 40 0
      hos-camel2/src/main/java/camel/log/TracerFormatter.java

+ 36 - 0
hos-agent/pom.xml

@ -22,6 +22,15 @@
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongo-java-driver</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
@ -79,7 +88,34 @@
            <artifactId>camel-http</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.zbus</groupId>
            <artifactId>zbus</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <mainClass>com.yihu.hos.agent.HosAgentApplication</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

+ 1 - 32
hos-agent/src/main/java/com/yihu/hos/agent/HosAgentApplication.java

@ -1,42 +1,11 @@
package com.yihu.hos.agent;
import com.yihu.hos.agent.service.MycatService;
import com.yihu.hos.agent.service.FlowService;
import com.yihu.hos.agent.service.ShellService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HosAgentApplication implements CommandLineRunner {
    private FlowService flowService;
    private ShellService shellService;
    private MycatService mycatService;
public class HosAgentApplication {
    public static void main(String[] args) {
        SpringApplication.run(HosAgentApplication.class, args);
    }
    @Override
    public void run(String... strings) throws Exception {
//        flowService.server();
//        shellService.server();
//        mycatService.server();
    }
    @Autowired
    public void setFlowService(FlowService flowService) {
        this.flowService = flowService;
    }
    @Autowired
    public void setShellService(ShellService shellService) {
        this.shellService = shellService;
    }
    @Autowired
    public void setMycatService(MycatService mycatService) {
        this.mycatService = mycatService;
    }
}

+ 27 - 0
hos-agent/src/main/java/com/yihu/hos/agent/camel/aggregator/EHRLogAggregator.java

@ -0,0 +1,27 @@
package com.yihu.hos.agent.camel.aggregator;
import org.apache.camel.Exchange;
import org.apache.camel.processor.aggregate.AggregationStrategy;
import java.util.ArrayList;
/**
 * Created by l4qiang on 2017-04-14.
 */
public class EHRLogAggregator implements AggregationStrategy {
    @Override
    public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
        Object newBody = newExchange.getIn().getBody();
        ArrayList<Object> list = null;
        if (oldExchange == null) {
            list = new ArrayList<Object>();
            list.add(newBody);
            newExchange.getIn().setBody(list);
            return newExchange;
        } else {
            list = oldExchange.getIn().getBody(ArrayList.class);
            list.add(newBody);
            return oldExchange;
        }
    }
}

+ 13 - 0
hos-agent/src/main/java/com/yihu/hos/agent/camel/expression/EHRLogExpression.java

@ -0,0 +1,13 @@
package com.yihu.hos.agent.camel.expression;
import ch.qos.logback.classic.spi.ILoggingEvent;
import org.apache.camel.Exchange;
/**
 * Created by l4qiang on 2017-04-14.
 */
public class EHRLogExpression {
    public String getBreadcrumbId(ILoggingEvent event){
        return event.getMDCPropertyMap().get("camel.breadcrumbId");
    }
}

+ 65 - 0
hos-agent/src/main/java/com/yihu/hos/agent/camel/processor/EHRLogProcesser.java

@ -0,0 +1,65 @@
package com.yihu.hos.agent.camel.processor;
import ch.qos.logback.classic.spi.ILoggingEvent;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import java.sql.Timestamp;
import java.util.ArrayList;
/**
 * ehr log处理
 * @author Airhead
 * @since 2017/3/30.
 */
public class EHRLogProcesser implements Processor {
    @Override
    public void process(Exchange exchange) throws Exception {
        exchange.getOut().setBody("");
        ArrayList arrayList = exchange.getIn().getBody(ArrayList.class);
        if (arrayList.size() != 3){
            return;
        }
        Object first = arrayList.get(0);
        Object last = arrayList.get(2);
        try {
            ILoggingEvent firstEvent = (ILoggingEvent) first;
            ILoggingEvent lastEvent = (ILoggingEvent) last;
            ObjectMapper objectMapper = new ObjectMapper();
            JsonNode jsonNode = objectMapper.readValue(firstEvent.getMessage(), JsonNode.class);
            ObjectNode objectNode = objectMapper.createObjectNode();
            objectNode.put("time", new Timestamp(firstEvent.getTimeStamp()).toString());
            objectNode.put("logType", 1);
            objectNode.put("caller", jsonNode.get("appKey").asText());
            ObjectNode dataNode = objectMapper.createObjectNode();
            dataNode.put("responseTime", lastEvent.getTimeStamp() - firstEvent.getTimeStamp());
            dataNode.put("url", jsonNode.get("CamelHttpUrl").asText());
            ObjectNode paramNode = objectMapper.createObjectNode();
            paramNode.put("api", jsonNode.get("api").asText());
            paramNode.put("appKey", jsonNode.get("appKey").asText());
            paramNode.put("sign", jsonNode.get("sign").asText());
            paramNode.put("timestamp", jsonNode.get("timestamp").asText());
            paramNode.put("v", jsonNode.get("v").asText());
            if (jsonNode.has("param")) {
                paramNode.put("param", jsonNode.get("param").asText());
            }
            if (jsonNode.has("token")) {
                paramNode.put("token", jsonNode.get("token").asText());
            }
            dataNode.set("params", paramNode);
            objectNode.set("data", dataNode);
            String content = objectMapper.writeValueAsString(objectNode);
            exchange.getOut().setBody(content);
        } catch (JsonParseException e) {
            e.printStackTrace();
        }
    }
}

+ 42 - 0
hos-agent/src/main/java/com/yihu/hos/agent/camel/route/EHRLogRouterBuilder.java

@ -0,0 +1,42 @@
package com.yihu.hos.agent.camel.route;
import ch.qos.logback.classic.spi.LoggingEvent;
import com.yihu.hos.agent.camel.aggregator.EHRLogAggregator;
import com.yihu.hos.agent.camel.expression.EHRLogExpression;
import com.yihu.hos.agent.camel.processor.EHRLogProcesser;
import com.yihu.hos.agent.configuration.AgentConfiguration;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.jms.JmsComponent;
import org.apache.camel.model.ModelCamelContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.jms.ConnectionFactory;
/**
 * @author Airhead
 * @since 2017/3/30.
 */
@Component
public class EHRLogRouterBuilder extends RouteBuilder {
    private static final String DESTINATION_NAME = "business-log-ehr";
    private static final String QUEUE_NAME = "business.log.queue";
    @Autowired
    private AgentConfiguration agentConfiguration;
    @Override
    public void configure() throws Exception {
        ModelCamelContext context = this.getContext();
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
                agentConfiguration.getActiveMqUser(), agentConfiguration.getActiveMqPassword(), agentConfiguration.getBrokerURL());
        // Note we can explicit name the component
        context.addComponent(DESTINATION_NAME, JmsComponent.jmsComponentAutoAcknowledge(connectionFactory));
        from(DESTINATION_NAME + ":topic:" + QUEUE_NAME)
                .aggregate(method(new EHRLogExpression(), "getBreadcrumbId"), new EHRLogAggregator())
                .completionSize(3)
                .process(new EHRLogProcesser())
                .to("file://e:/log");
    }
}

+ 10 - 9
hos-broker/src/main/java/com/yihu/hos/broker/common/camelrouter/BusinessLogRouter.java

@ -1,6 +1,6 @@
package com.yihu.hos.broker.common.camelrouter;
package com.yihu.hos.agent.camel.route;
import com.yihu.hos.broker.configurations.ActivemqConfiguration;
import com.yihu.hos.agent.configuration.AgentConfiguration;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.jms.JmsComponent;
@ -10,24 +10,25 @@ import org.springframework.stereotype.Component;
import javax.jms.ConnectionFactory;
/**
 * @created Airhead 2016/8/8.
 * Created by l4qiang on 2017-04-14.
 */
@Component
public class BusinessLogRouter extends RouteBuilder {
    static public final String DESTINATION_NAME = "business-log";
public class HosLogRouteBuilder extends RouteBuilder {
    static public final String DESTINATION_NAME = "business-log-hos";
    private static final String QUEUE_NAME = "business.log.queue";
    @Autowired
    private ActivemqConfiguration activemqConfiguration;
    private AgentConfiguration agentConfiguration;
    @Override
    public void configure() throws Exception {
        ModelCamelContext context = this.getContext();
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
                activemqConfiguration.getUser(), activemqConfiguration.getPassword(), activemqConfiguration.getBrokerURL());
                agentConfiguration.getActiveMqUser(), agentConfiguration.getActiveMqPassword(), agentConfiguration.getBrokerURL());
        // Note we can explicit name the component
        context.addComponent(DESTINATION_NAME, JmsComponent.jmsComponentAutoAcknowledge(connectionFactory));
        from("business-log:topic:business.log.queue")
        from(DESTINATION_NAME + ":topic:" + QUEUE_NAME)
                .to("bean:businessLogService?method=log");
    }
}

+ 0 - 19
hos-agent/src/main/java/com/yihu/hos/agent/camelrouter/AdminProxyRouter.java

@ -1,19 +0,0 @@
package com.yihu.hos.agent.camelrouter;
import org.apache.camel.builder.RouteBuilder;
import org.springframework.stereotype.Component;
/**
 * @author Airhead
 * @since 2017/1/20.
 */
@Component
public class AdminProxyRouter extends RouteBuilder {
    @Override
    public void configure() throws Exception {
        this.getContext().setTracing(true);
        from("jetty:http://0.0.0.0:9000")
                .process(new GatewayProcessor())
                .routingSlip(method(GatewayProcessor.class, "route"));
    }
}

+ 0 - 34
hos-agent/src/main/java/com/yihu/hos/agent/camelrouter/GatewayProcessor.java

@ -1,34 +0,0 @@
package com.yihu.hos.agent.camelrouter;
import org.apache.camel.Exchange;
import org.apache.camel.Header;
import org.apache.camel.Message;
import org.apache.camel.Processor;
import java.util.HashMap;
import java.util.Map;
public class GatewayProcessor implements Processor {
    public void process(Exchange exchange) throws Exception {
        Message in = exchange.getIn();
        String query = (String) in.getHeader(Exchange.HTTP_QUERY);
        if (query != null) {
            String[] values = query.split("=");
            if (values.length == 2 && values[0].equals("api")) {
                in.setHeader("api", values[1]);
            }
        }
    }
    public String route(@Header("api") String api) {
        if (api == null) {
            return null;
        }
        Map<String, String> apiRoute = new HashMap<>();
        apiRoute.put("swagger", "jetty:http://192.168.1.221:10000/swagger-ui.html?bridgeEndpoint=true&throwExceptionOnFailure=false");
        return apiRoute.get(api);
    }
}

+ 37 - 12
hos-agent/src/main/java/com/yihu/hos/agent/configuration/AgentConfiguration.java

@ -1,7 +1,11 @@
package com.yihu.hos.agent.configuration;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.zbus.broker.ZbusBroker;
import java.io.IOException;
/**
 * @author Airhead
@ -14,18 +18,39 @@ public class AgentConfiguration {
    @Value("${agent.tenant.name}")
    private String tenant;
//    private ZbusBroker zbusBroker;
//    @Bean
//    public ZbusBroker getZbusBroker() {
////        try {
////            zbusBroker = new ZbusBroker(this.zbusBrokerURL);
////            return zbusBroker;
////        } catch (IOException e) {
////            e.printStackTrace();
////        }
//        return null;
//    }
    @Value("${spring.activemq.broker-url}")
    private String brokerURL;
    @Value("${spring.activemq.user}")
    private String activeMqUser;
    @Value("${spring.activemq.password}")
    private String activeMqPassword;
    private ZbusBroker zbusBroker;
    public String getBrokerURL() {
        return brokerURL;
    }
    public String getActiveMqUser() {
        return activeMqUser;
    }
    public String getActiveMqPassword() {
        return activeMqPassword;
    }
    @Bean
    public ZbusBroker getZbusBroker() {
        try {
            zbusBroker = new ZbusBroker(this.zbusBrokerURL);
            return zbusBroker;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
    public String getZbusBrokerURL() {
        return zbusBrokerURL;

+ 3 - 3
hos-broker/src/main/java/com/yihu/hos/broker/models/BusinessLog.java

@ -1,4 +1,4 @@
package com.yihu.hos.broker.models;
package com.yihu.hos.agent.model;
import com.yihu.hos.core.datatype.DateUtil;
import org.springframework.data.annotation.Id;
@ -11,7 +11,7 @@ import java.util.Date;
 * @created Airhead 2016/8/8.
 */
@Document(collection = "business")
public class BusinessLog {
public class HosLog {
    @Id
    private String id;
    @Indexed
@ -32,7 +32,7 @@ public class BusinessLog {
    private Date updateTime;
    private Date createTime;
    public BusinessLog() {
    public HosLog() {
        this.createTime = DateUtil.getSysDateTime();
    }

+ 14 - 14
hos-broker/src/main/java/com/yihu/hos/broker/services/BusinessLogService.java

@ -1,7 +1,7 @@
package com.yihu.hos.broker.services;
package com.yihu.hos.agent.service;
import ch.qos.logback.classic.spi.ILoggingEvent;
import com.yihu.hos.broker.models.BusinessLog;
import com.yihu.hos.agent.model.HosLog;
import com.yihu.hos.core.log.Logger;
import com.yihu.hos.core.log.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -15,8 +15,8 @@ import java.util.Map;
 * @created Airhead 2016/8/8.
 */
@Component("businessLogService")
public class BusinessLogService {
    private static final Logger logger = LoggerFactory.getLogger(BusinessLogService.class);
public class HosLogService {
    private static final Logger logger = LoggerFactory.getLogger(HosLogService.class);
    @Autowired
    private MongoOperations mongoOperations;
@ -35,17 +35,17 @@ public class BusinessLogService {
     */
    public void log(ILoggingEvent event) {
        Map<String, String> mdcPropertyMap = event.getMDCPropertyMap();
        BusinessLog businessLog = new BusinessLog();
        HosLog hosLog = new HosLog();
        businessLog.setFireTime(new Date(event.getTimeStamp()));
        businessLog.setExchangeId(mdcPropertyMap.get("camel.exchangeId"));
        businessLog.setTransactionKey(mdcPropertyMap.get("camel.transactionKey"));
        businessLog.setRouteId(mdcPropertyMap.get("camel.routeId"));
        businessLog.setBreadcrumbId(mdcPropertyMap.get("camel.breadcrumbId"));
        businessLog.setCamelContextId(mdcPropertyMap.get("camel.contextId"));
        businessLog.setBody(event.getMessage());
        businessLog.setBodyLength(event.getMessage().length());
        hosLog.setFireTime(new Date(event.getTimeStamp()));
        hosLog.setExchangeId(mdcPropertyMap.get("camel.exchangeId"));
        hosLog.setTransactionKey(mdcPropertyMap.get("camel.transactionKey"));
        hosLog.setRouteId(mdcPropertyMap.get("camel.routeId"));
        hosLog.setBreadcrumbId(mdcPropertyMap.get("camel.breadcrumbId"));
        hosLog.setCamelContextId(mdcPropertyMap.get("camel.contextId"));
        hosLog.setBody(event.getMessage());
        hosLog.setBodyLength(event.getMessage().length());
        mongoOperations.save(businessLog);
        mongoOperations.save(hosLog);
    }
}

+ 14 - 1
hos-agent/src/main/resources/application.yml

@ -15,10 +15,23 @@ camel:
---
spring:
  profiles: dev
  activemq:
      broker-url: tcp://172.19.103.57:61616
      user: admin
      password: admin
  data:
    mongodb:
      host: 172.19.103.57
      port: 27017
      username: esb
      password: esb
      authenticationDatabase: admin
      database: log
      gridFsDatabase: dfs
agent:
  zbus:
    url: 127.0.0.1:15555
    url: 172.19.103.57:9020
  tenant:
    name: jzkl
  proxy:

+ 40 - 0
hos-broker/src/main/java/com/yihu/hos/broker/common/log/TracerFormatter.java

@ -0,0 +1,40 @@
package com.yihu.hos.broker.common.log;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import org.apache.camel.Exchange;
import org.apache.camel.model.ProcessorDefinition;
import org.apache.camel.processor.interceptor.DefaultTraceFormatter;
import org.apache.camel.processor.interceptor.TraceInterceptor;
import java.util.Map;
/**
 * 处理日志格式
 * Created by l4qiang on 2017-04-14.
 */
public class TracerFormatter extends DefaultTraceFormatter {
    @Override
    public Object format(TraceInterceptor interceptor, ProcessorDefinition<?> node, Exchange exchange) {
        System.out.println(exchange.getIn().getBody());
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            ObjectNode objectNode = objectMapper.createObjectNode();
            Map<String, Object> headers = exchange.getIn().getHeaders();
            headers.forEach((key, value) -> {
                if (value == null) {
                    return;
                }
                objectNode.put(key, value.toString());
            });
            return objectMapper.writeValueAsString(objectNode);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return exchange.getIn().getBody();
    }
}

+ 15 - 11
hos-broker/src/main/java/com/yihu/hos/broker/services/camel/CamelStartBoot.java

@ -1,12 +1,14 @@
package com.yihu.hos.broker.services.camel;
import com.yihu.hos.broker.common.log.TracerFormatter;
import com.yihu.hos.broker.services.BrokerServerService;
import com.yihu.hos.core.log.Logger;
import com.yihu.hos.core.log.LoggerFactory;
import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.processor.interceptor.DefaultTraceFormatter;
import org.apache.camel.processor.interceptor.Tracer;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@ -22,9 +24,10 @@ import java.util.concurrent.SynchronousQueue;
 */
@Component
public class CamelStartBoot {
    private static Logger logger = LogManager.getLogger(CamelStartBoot.class);
    private static Logger logger = LoggerFactory.getLogger(CamelStartBoot.class);
    private BrokerServerService brokerServerService;
    private CamelContext context = SystemCamelContext.getContext();
    @Autowired
    public void setBrokerServerService(BrokerServerService brokerServerService) {
@ -35,12 +38,10 @@ public class CamelStartBoot {
        logger.info("Apache Camel Context 启动...");
        try {
            SystemCamelContext.getContext().setTracing(true);
            SystemCamelContext.getContext().setUseMDCLogging(true);
            context.setUseMDCLogging(true);
            Tracer tracer = new Tracer();
            DefaultTraceFormatter formatter = new DefaultTraceFormatter();
            DefaultTraceFormatter formatter = new TracerFormatter();
            formatter.setShowHeaders(true);
            formatter.setShowBody(true);
            formatter.setShowBodyType(true);
@ -48,15 +49,18 @@ public class CamelStartBoot {
            formatter.setShowOutBody(true);
            formatter.setShowOutBodyType(true);
            tracer.setFormatter(formatter);
            SystemCamelContext.getContext().getProperties().put(Exchange.LOG_DEBUG_BODY_STREAMS, "true");
            context.addInterceptStrategy(tracer);
            context.setTracing(true);
            context.getProperties().put(Exchange.LOG_DEBUG_BODY_STREAMS, "true");
            SystemCamelContext.getContext().start();
            context.start();
            List<URL> URLs = new ArrayList<>();
            ClassLoader currentClassLoader = Thread.currentThread().getContextClassLoader();
            ClassLoader camelClassLoader = new URLClassLoader(URLs.toArray(new URL[]{}), currentClassLoader);
            Thread.currentThread().setContextClassLoader(camelClassLoader);
            SystemCamelContext.getContext().setApplicationContextClassLoader(camelClassLoader);
            context.setApplicationContextClassLoader(camelClassLoader);
            logger.info("Apache Camel Context 启动完成...");
@ -70,7 +74,7 @@ public class CamelStartBoot {
                    Class<RouteBuilder> routeBuilderClass = (Class<RouteBuilder>) camelClassLoader.loadClass(className);
                    if (routeBuilderClass != null) {
                        RouteBuilder routeBuilder = routeBuilderClass.newInstance();
                        SystemCamelContext.getContext().addRoutes(routeBuilder);
                        context.addRoutes(routeBuilder);
                    }
                } catch (ClassNotFoundException e) {
                    e.printStackTrace();

+ 6 - 6
hos-camel2/src/main/java/camel/gateway/route/GatewayRouterBuilder.java

@ -1,11 +1,11 @@
package camel.gateway.route;
import camel.log.TracerFormatter;
import camel.gateway.processor.ErrorHandle;
import camel.gateway.processor.GatewayProcessor;
import camel.gateway.processor.SignProcessor;
import org.apache.camel.Exchange;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.processor.interceptor.DefaultTraceFormatter;
import org.apache.camel.processor.interceptor.Tracer;
import org.springframework.stereotype.Component;
@ -23,7 +23,8 @@ public class GatewayRouterBuilder extends RouteBuilder {
        this.getContext().setTracing(true);
        Tracer tracer = new Tracer();
        DefaultTraceFormatter formatter = new DefaultTraceFormatter();
//        DefaultTraceFormatter formatter = new DefaultTraceFormatter();
        TracerFormatter formatter = new TracerFormatter();
        formatter.setShowHeaders(true);
        formatter.setShowBody(true);
        formatter.setShowBodyType(true);
@ -31,18 +32,17 @@ public class GatewayRouterBuilder extends RouteBuilder {
        formatter.setShowOutBody(true);
        formatter.setShowOutBodyType(true);
        tracer.setFormatter(formatter);
        this.getContext().addInterceptStrategy(tracer);
        this.getContext().getProperties().put(Exchange.LOG_DEBUG_BODY_STREAMS, "true");
        from("jetty:http://0.0.0.0:9998?matchOnUriPrefix=true").routeId("proxy")
                .to("jetty:http://192.168.1.221:10000?bridgeEndpoint=true&throwExceptionOnFailure=false");
        from("jetty:http://0.0.0.0:9999/api").routeId("api")
                .log(body().toString())
                .process(new GatewayProcessor())
                .routingSlip(method(GatewayProcessor.class, "route"))
                .log(body().toString());
                .routingSlip(method(GatewayProcessor.class, "route"));
        from("jetty:http://0.0.0.0:9999/error")
                .choice()

+ 0 - 15
hos-camel2/src/main/java/camel/gatewaylog/processor/LogProcesser.java

@ -1,15 +0,0 @@
package camel.gatewaylog.processor;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
/**
 * @author Airhead
 * @since 2017/3/30.
 */
public class LogProcesser implements Processor {
    @Override
    public void process(Exchange exchange) throws Exception {
    }
}

+ 0 - 27
hos-camel2/src/main/java/camel/gatewaylog/route/LogRouterBuilder.java

@ -1,27 +0,0 @@
package camel.gatewaylog.route;
import camel.gatewaylog.processor.LogProcesser;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.jms.JmsComponent;
import org.apache.camel.model.ModelCamelContext;
import javax.jms.ConnectionFactory;
/**
 * @author Airhead
 * @since 2017/3/30.
 */
public class LogRouterBuilder extends RouteBuilder {
    @Override
    public void configure() throws Exception {
        ModelCamelContext context = this.getContext();
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
                "admin", "admin", "tcp://172.19.103.57:61616");
        // Note we can explicit name the component
        context.addComponent("business-log-2", JmsComponent.jmsComponentAutoAcknowledge(connectionFactory));
        from("business-log-2:topic:business.log.queue")
                .process(new LogProcesser())
                .to("file://e:/log");
    }
}

+ 40 - 0
hos-camel2/src/main/java/camel/log/TracerFormatter.java

@ -0,0 +1,40 @@
package camel.log;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import org.apache.camel.Exchange;
import org.apache.camel.model.ProcessorDefinition;
import org.apache.camel.processor.interceptor.DefaultTraceFormatter;
import org.apache.camel.processor.interceptor.TraceInterceptor;
import java.util.Map;
/**
 * Created by l4qiang on 2017-04-14.
 */
public class TracerFormatter extends DefaultTraceFormatter {
    @Override
    public Object format(TraceInterceptor interceptor, ProcessorDefinition<?> node, Exchange exchange) {
        System.out.println(exchange.getIn().getBody());
        ObjectMapper objectMapper = new ObjectMapper();
        try {
//            return objectMapper.writeValueAsString(exchange.getIn().getHeaders());
            ObjectNode objectNode = objectMapper.createObjectNode();
            Map<String, Object> headers = exchange.getIn().getHeaders();
            headers.forEach((key, value) -> {
                if (value == null) {
                    return;
                }
                objectNode.put(key, value.toString());
            });
            return objectMapper.writeValueAsString(objectNode);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return exchange.getIn().getBody();
    }
}