Записать сообщение в логику сумо из Android-клиента

У меня есть требование, чтобы войти сообщение от клиента Android. Существует ли какой-либо логический модуль сумо для логирования сообщений из приложения Android?

1 ответ

Решение

Вы можете опубликовать свое сообщение журнала / любое сообщение из приложения Android в облачном управлении журналами Summo Logic.

Summo Logic предоставляет веб-сервисы / REST для выполнения запросов POST, GET.

Вам просто нужно опубликовать свои данные в теле запроса и указать конечную точку сбора Sumo, а также UniqueHTTPCollectorCode.

Служба REST / веб-служба: https://%5BSumoEndpoint%5D/receiver/v1/http/%5BUniqueHTTPCollectorCode%5D

Например: "https: //endpoint1.collection.us2.sumologic.com/ receiver / v1 / http /SanTC12dhaV1oma90Vvb..."

Вы можете использовать библиотеку Retorfit / Volley для REST Communication .

Ниже приведен псевдокод, который передает основную связь REST в фоновом режиме через Android Async Task.

Я настоятельно рекомендую использовать вышеупомянутые библиотеки.

public static String performPostRequest(String summoUrl, String payload, 
    Context context) throws IOException {
    URL url = new URL(summoUrl);
    HttpURLConnection uc = (HttpURLConnection) url.openConnection();
    String line;
    StringBuffer jsonString = new StringBuffer();

    uc.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
    uc.setRequestMethod("POST");
    uc.setDoInput(true);
    uc.setInstanceFollowRedirects(false);
    uc.connect();
    OutputStreamWriter writer = new OutputStreamWriter(uc.getOutputStream(), "UTF-8");
    writer.write(payload);
    writer.close();
    try {
        BufferedReader br = new BufferedReader(new InputStreamReader(uc.getInputStream()));
        while((line = br.readLine()) != null){
            jsonString.append(line);
        }
        br.close();
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    uc.disconnect();
    return jsonString.toString();
}

Асинхронная задача

      new AsyncTask<String, String, String>() {

            @Override
            protected String doInBackground(String... params) {
                try {
                    String response = makePostRequest(""https://endpoint1.collection.us2.sumologic.com/receiver/v1/http/ZaVnC4dhaV1oma90Vvb..."", 
         // Sample JSON Data               "
  {     \"organization": \"organization.name\",
        \"environment": \"environment.name\",
        \"apiProduct": \("apiproduct.name"),
        \"proxyName": \("apiproxy.name"),
        \"appName": \("developer.app.name"),
        \"verb": \("request.verb"),
        \"url": '' + \("client.scheme") + '://' + \("request.header.host") + \("request.uri"),
        \"responseCode": \("message.status.code"),
        \"responseReason": \("message.reason.phrase"),
        \"clientLatency": total_client_time,
        \"targetLatency": total_target_time,
        \"totalLatency": total_request_time
        }", getApplicationContext());
    // Hard coded Success as response from Server, replace with this as per your need
                    return "Success";
                } catch (IOException exception) {
                    exception.printStackTrace();
                    return exception.getMessage();
                }
            }

        }.execute("");

Для получения дополнительной информации, пожалуйста, обратитесь к документации с официального веб-сайта сумо

https://help.sumologic.com/Send-Data/Sources/02Sources-for-Hosted-Collectors/HTTP-Source/Upload-Data-to-an-HTTP-Source

Другие вопросы по тегам