package com.elab.log.message;

import com.dianping.cat.message.Event;
import com.dianping.cat.message.internal.DefaultMessageProducer;

/**
 * 重写CAT消息生产的模型,将CAT的异常做特殊处理,与指定的开发人员进行绑定
 *
 * @author Liukx
 * @create 2018-02-08 18:00
 * @email liukx@elab-plus.com
 **/
public class CatMessageProducer extends DefaultMessageProducer {
    private final String errorType = "ERROR";

    /**
     * 创建一个事件消息
     *
     * @param type           类型
     * @param name           业务名称
     * @param status         消息状态
     * @param nameValuePairs 消息内容
     */
    @Override
    public void logEvent(String type, String name, String status, String nameValuePairs) {
        String author = "";
        if (errorType.equals(status)) {
            int startIndex = nameValuePairs.indexOf("[");
            int endIndex = nameValuePairs.indexOf("]");
            if (startIndex >= 0 && endIndex > 0) {
                author = nameValuePairs.substring(startIndex, endIndex + 1) + " - ";
            }
        }
        // 构建一个事件
        Event event = newEvent(type, author + name);

        // 判断这个消息内容是否为空,为空的不作为处理
        if (nameValuePairs != null && nameValuePairs.length() > 0) {
            event.addData(nameValuePairs);
        }

        event.setStatus(status);
        event.complete();
    }
}
