All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.ruijc.log.AliyunSLSLogger Maven / Gradle / Ivy

The newest version!
package com.ruijc.log;

import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.LogContent;
import com.aliyun.openservices.log.common.LogItem;
import com.aliyun.openservices.log.common.QueriedLog;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.request.GetLogsRequest;
import com.aliyun.openservices.log.request.PutLogsRequest;
import com.aliyun.openservices.log.response.GetLogsResponse;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 使用阿里云的SLS框架的日志记录器
 *
 * @author Storezhang
 */
public class AliyunSLSLogger extends BaseLogger {

    private final String project;
    private final Client client;

    public AliyunSLSLogger(String key, String secret, String endPoint, String project, String source) {
        this.project = project;
        client = new Client(endPoint, key, secret, source, true);
    }

    @Override
    public void log(String store, String topic, String source, Object... args) {
        List logs = new ArrayList();

        LogItem item = new LogItem((int) (System.currentTimeMillis() / 1000));
        for (int i = 0; i < args.length; ++i) {
            item.PushBack(String.valueOf(args[i]), String.valueOf(args[++i]));
        }
        logs.add(item);

        PutLogsRequest req = new PutLogsRequest(project, store, topic, source, logs);
        try {
            client.PutLogs(req);
        } catch (LogException ex) {
            //Logger.log(ex);
        }
    }

    @Override
    public List> query(String store, String topic, long start, long end, String query, long offset, int num) {
        List> data = new ArrayList>();

        GetLogsRequest req = new GetLogsRequest(
                project,
                store,
                (int) (start / 1000),
                (int) (end / 1000),
                topic,
                query,
                (int) offset,
                num,
                true
        );
        GetLogsResponse res;
        try {
            res = client.GetLogs(req);
        } catch (Exception e) {
            //Logger.log(e);
            return data;
        }

        List logs = res.GetLogs();
        if (null != logs && !logs.isEmpty()) {
            for (QueriedLog log : logs) {
                Map logData = new HashMap();
                logData.put("source", log.GetSource());
                List contents = log.GetLogItem().GetLogContents();
                if (null != contents && !contents.isEmpty()) {
                    for (LogContent content : contents) {
                        logData.put(content.GetKey(), content.GetValue());
                    }
                }
                data.add(logData);
            }
        }

        return data;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy