Android SDK v1

Prev Next

Classic/VPC環境で利用できます。

Android SDK v1を使用するでは、Effective Log Search & Analytics 2.0サービスが提供する Android SDK v1の使用方法を説明します。

SDKを使用する手順は、次の通りです。

1. 事前準備
2. SDKのインストール
3. SDKの初期化
4. SDKの権限追加
5. SDKを使用する

1. 事前準備

Android SDKをインストールするための事前準備事項は、次の通りです。

  1. NAVERクラウドプラットフォームコンソールで、プロジェクトを作成します。
  2. 作成したプロジェクト詳細情報画面で txtToken値を確認します。
  3. Android SDK v1をダウンロードします。

2. Android SDK v1のインストール

Android SDK v1をインストールする方法は、次の通りです。

  1. ダウンロードした SDKファイルの圧縮を解凍します。
  2. SDKをインストールする Androidプロジェクトの libs フォルダに SDKファイルを保存します。
    • Thriftプロトコルの使用時: nelo2-android-sdk-common-SDK버전명.jarnelo2-android-sdk-thrift-SDK버전명.jar ファイルを保存
    • HTTPSプロトコルの使用時: nelo2-android-sdk-common-SDK버전명.jarnelo2-android-sdk-https-SDK버전명.jar ファイルを保存
    • NELO SDK 0.9.0バージョンからプロトコルに従って libsフォルダに追加するライブラリファイルが異なります。
    • 例)
      .....
      android {
          compileOptions {
              sourceCompatibility JavaVersion.VERSION_1_8
              targetCompatibility JavaVersion.VERSION_1_8
          }
      }
      .....
      repositories{
          flatDir{
              dirs 'libs'
          }
      }
      .....
      dependencies {
          implementation (name: 'nelo2-android-sdk-common', version: '0.12.0', ext: 'aar')
          implementation (name: 'nelo2-android-sdk-https', version: '0.12.0', ext: 'aar')
          implementation (name: 'nelo2-android-sdk-thrift', version: '0.12.0', ext: 'aar')
          implementation (name: 'tink-android', version: '1.4.0', ext: 'jar')
      }
      .....
      

3. Android SDK v1の初期化

Effective Log Search & Analytics 2.0 Android SDKは、以下の2つの方法で初期化できます。

  • Main Activityで initメソッド呼び出し
    • アプリクラッシュの発生時、Crash Dialogを作成せずにログ転送
    • 例)
      public class MainActivity extends Activity {
      
          .....
      
          @Override
      
          protected void onCreate(Bundle savedInstanceState) {
      
              .....
      
              NeloLog.init(getApplication(), "elsa-col.ncloud.com", 10006, "__プロジェクト_ID__", "__プロジェクトバージョン__");
      
              .....
      
          }
      
      }
      
  • Applicationで initメソッド呼び出し
    • @NeloConf アノテーションと一緒に使用
    • アプリクラッシュの発生時、設定に応じてクラッシュログを転送する Crash Dialog出力
    • 例)
      @NeloConf(
          collectorUrl = "elsa-col.ncloud.com",                   // Effective Log Search & Analytics 2.0 Collector URL   (required)
          serverPort = Nelo2Constants.SERVER_PORT_THRIFT,         // Effective Log Search & Analytics 2.0 Port Number     (required)
          projectName = "72356c50401b8e20_testproject",           // Effective Log Search & Analytics 2.0 Project ID     (required)
          mode = CrashReportMode.DIALOG,                          // Effective Log Search & Analytics 2.0 CrashReportMode (optional, Default : SLIENT)
          sendMode = NeloSendMode.ALL,                            // Effective Log Search & Analytics 2.0 SendMode        (optional, Default : ALL)
          debug = true,                                           // Effective Log Search & Analytics 2.0 Debug mode      (optional, Default : false)
          logSource = "elsa-android",                             // Effective Log Search & Analytics 2.0 Log Source      (optional, Default : nelo2-android)
          logType = "development",                                // Effective Log Search & Analytics 2.0 Log Type        (optional, Defalut : nelo2-log)
          resDialogText = R.string.crash_dialog_text,             // Crash Report Doalog Text     (required, if you set mode CrashReportMode.Dialog)
          resDialogTitle = R.string.crash_dialog_title            // Crash Report Dolog Title    (required, if you set mode CrashReportMode.Dialog)
      )
      public class MainApplication extends Application {
          .....
          @Override
          protected void onCreate() {
              .....
              NeloLog.init(this);
              .....
          }
      }
      .....
      
参考
  • 初期化関数の詳細は、初期化 APIをご参照ください。
  • Applicationで initメソッドを呼び出し、初期化することをお勧めします。

4. Android SDK v1の権限追加

ネットワーク状態、デバイス情報、通信キャリア、Logcatなどの情報をインポートするための権限を追加します。AndroidManifest.xmlファイルに以下の内容を追加します。

.....
/** AndroidManifest.xml **/
    <!-- Neloログ転送のためのインターネットアクセス権限(必須) -->
    <uses-permission android:name="android.permission.INTERNET"/>

    <!-- Platform、Carrierなど携帯電話の情報にアクセスするための権限(必須) -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

    <!-- Networkアクセス有無に対し、アクセスするための権限(必須) -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

    <!-- Networkにアクセスできない場合、ファイルとして dataを保存するための権限 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
.....

      <!-- Crash Report Dialogを使用するために Applicationを作成した場合、名前を設定する必要がある-->
       <application ..... android:name="ApplicationName">
.....

       <!-- Network状態をチェックして WiFiモードの場合のみログを転送するために追加する必要があるレシーバー -->
    <!-- SendModeを Allで使用する場合、追加する必要がない -->
    <receiver android:name="com.nhncorp.nelo2.android.util.NetworkStatusReceiver">
        <intent-filter>
               <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
        </intent-filter>
    </receiver>
.....

<!-- Crash Report Dialogを使用するための Activity -->
<!-- CrashReportMode.DIALOGを使用しない場合、追加する必要がない -->
<activity android:name="com.nhncorp.nelo2.android.CrashReportDialog"
    android:theme="@android:style/Theme.Dialog"
    android:launchMode="singleInstance"
    android:excludeFromRecents="true"
    android:finishOnTaskLaunch="true" />
.....

5. SDKを使用する

以下の Effective Log Search & Analytics 2.0 Android SDKを使用する実際のサンプルコードを参照し、プロジェクトにログを転送します。

.....
import com.nhncorp.nelo2.android.NeloLog;
.....

public class MainActivity extends Activity {
.....
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        NeloLog.init(getApplication(),"ELSA-COLLECTOR-URL",10006,"ELSA-PROJECT-ID","PROJECT-VERSION");
        NeloLog.debug("ErrorCode","Message","ErrorLocation");   // Send Debug Message
        NeloLog.info("ErrorCode","Message","ErrorLocation");    // Send Info Message
        NeloLog.warn("ErrorCode","Message","ErrorLocation");    // Send Warn Message
        NeloLog.error("ErrorCode","Message","ErrorLocation");   // Send Error Message
        NeloLog.fatal("ErrorCode","Message","ErrorLocation");   // Send Fatal Message
        String nullString = null;
        try{
            nullString.toString();
        }catch(Exception e){
            NeloLog.crash(e,"ErrorCode","Message","ErrorLcoation"); // Send caught crash Message
        }

        NeloLog.debug("ErrorCode","Message","ErrorLocation");   // Send message with custom message
        int i = 10 / 0;     // Nelo send uncaught exception
    }
.....

Android SDK v1 APIの明細

Android SDK v1は、以下のような APIを提供します。

初期化 API

Android SDK v1は、呼び出し方法による初期化関数を提供します。

参考
  • 正常な動作のために、NeloLogを使用する前に NeloLogを初期化します。初期化は1回のみ行います。
  • Crash Report Dialogを使用するには、Applicationで初期化する必要があります。

Main Activityで初期化

Main Activityで初期化する APIは、次の通りです。

static boolean init(Application application, String reportServer, int projectName, String appId, String projectVersion)
static boolean init(Application application, String reportServer, int projectName, String appId, String projectVersion, String userId)

各パラメータの説明は、次の通りです。

パラメータ 説明
Application application Androidの applicationの情報
  • 一般的に getApplication() を使用
String reportServer ログ収集サーバのアドレス
  • Thrift: elsa-col.ncloud.com
  • HTTPS: https://elsa-col.ncloud.com/_store
int serverPort ログ収集サーバのポート情報
  • Thrift: 10006
  • Https: 443
String appId プロジェクトキー(プロジェクト詳細情報で確認)
String appVersion ログを転送するアプリのバージョン情報
String userId 転送するユーザー ID(オプション)

例)

NeloLog.init(getApplication(), "elsa-col.ncloud.com", 10006, "72356c50401b8e20_testproject", "1.0.0");

Applicationで初期化

Applicationで初期化する APIは、次の通りです。必ず @NeloConf アノテーションを一緒に入力します。

boolean init (Application application)

各パラメータの説明は、次の通りです。

パラメータ 説明
Application application Androidのアプリケーション情報。一般的に getApplication() を入力

例)

@NeloConf(

    collectorUrl = "elsa-col.ncloud.com",      // NELO Collector URL   (required)

    serverPort = Nelo2Constants.SERVER_PORT_THRIFT,         // NELO Port Number     (required)

    projectName = "72356c50401b8e20_testproject",           // NELO Project ID      (required)

    mode = CrashReportMode.DIALOG,                          // NELO CrashReportMode (optional, Default : SLIENT)

    sendMode = NeloSendMode.ALL,                            // NELO SendMode        (optional, Default : ALL)

    debug = true,                                           // NELO Debug mode      (optional, Default : false)

    logSource = "elsa-android",   // NELO Log Source      (optional, Default : nelo2-android)

    logType = "development",            // NELO Log Type        (optional, Defalut : nelo2-log)

    resDialogText = R.string.crash_dialog_text,             // Crash Report Doalog Text     (required, if you set mode CrashReportMode.Dialog)

    resDialogTitle = R.string.crash_dialog_title            // Crash Report Doalog Title    (required, if you set mode CrashReportMode.Dialog)

)

public class MainApplication extends Application {

    .....

    @Override

    protected void onCreate() {

        .....

        NeloLog.init(this);

        .....

    }

}

.....

System Field設定 API

System Field値を設定する APIは、次の通りです。設定した値は以降転送するすべてのログで同様に転送します。

ユーザー ID設定

ユーザー IDを設定する APIは、次の通りです。

static void void setUserID(String userID)

各パラメータの説明は、次の通りです。

パラメータ 説明
String userID ユーザー ID

例)

NeloLog.setUserID("test");

ログソース情報設定

ログソースを設定する APIは、次の通りです。

static void setLogSource(String logSource)
static void setLogSource(String instanceName, String logSource)

各パラメータの説明は、次の通りです。

パラメータ 説明
String logSource ログソース(logSource)の情報
String instanceName 動的インスタンス名

例)

NeloLog.setLogSource("NELO2 Android SDK LogSource");

ログタイプ設定

ログのタイプを設定する APIは、次の通りです。

static void setLogType(String logType)
static void setLogType(String instanceName, String logType)

各パラメータの説明は、次の通りです。

パラメータ 説明
String logType ログタイプ(logType)の情報
String instanceName 動的インスタンス名

例)

NeloLog.setLogType("NELO2 Android SDK LogType");

ログ転送 API

ログを転送する APIは、次の通りです。

参考

ログレベル(logLevel)ごとに関数を使用します。

  • ログレベル(logLevel): Fatal、Error、Warn、Info、Debug
static void debug(String errorCode,String message,String location)
static void debug(String errorCode,String message)
static void info(String errorCode,String message,String location)
static void info(String errorCode,String message)
static void warn(String errorCode,String message,String location)
static void warn(String errorCode,String message)
static void error(String errorCode,String message,String location)
static void error(String errorCode,String message)
static void fatal(String errorCode,String message,String location)
static void fatal(String errorCode,String message)

各パラメータの説明は、次の通りです。

パラメータ 説明
String errorCode NELOの errorCode フィールドにマッピングされる値
String message NELOの bodyにマッピングされる値
String location ログが発生した場所

例)

NeloLog.error("test"、"テスト値"、"location");
NeloLog.debug("test 2"、"テスト値 ")

ログ転送 API(例外を含む)

例外情報を含むログを転送する APIは、次の通りです。

ログエラー転送

例外情報を含むエラーログを転送する APIは、次の通りです。

参考

ログレベル(logLevel)ごとに関数を使用します。

  • ログレベル(logLevel): Fatal、Error、Warn、Info、Debug
static void debug(Throwable t, String errorCode,String message,String location)
static void debug(Throwable t, String errorCode,String message)
static void info(Throwable t, String errorCode,String message,String location)
static void info(Throwable t, String errorCode,String message)
static void warn(Throwable t, String errorCode,String message,String location)
static void warn(Throwable t, String errorCode,String message)
static void error(Throwable t, String errorCode,String message,String location)
static void error(Throwable t, String errorCode,String message)
static void fatal(Throwable t, String errorCode,String message,String location)
static void fatal(Throwable t, String errorCode,String message)

// 動的インスタンスログの転送用
static void debugWithInstanceName(String instanceName, Throwable t, String errorCode, String message)
static void debugWithInstanceName(String instanceName, Throwable t, String errorCode, String message, String errorLocation)
static void infoWithInstanceName(String instanceName, Throwable t, String errorCode, String message)
static void infoWithInstanceName(String instanceName, Throwable t, String errorCode, String message, String errorLocation)
static void warnWithInstanceName(String instanceName, Throwable t, String errorCode, String message)
static void warnWithInstanceName(String instanceName, Throwable t, String errorCode, String message, String errorLocation)
static void errorWithInstanceName(String instanceName, Throwable t, String errorCode, String message)
static void errorWithInstanceName(String instanceName, Throwable t, String errorCode, String message, String errorLocation)
static void fatalWithInstanceName(String instanceName, Throwable t, String errorCode, String message)
static void fatalWithInstanceName(String instanceName, Throwable t, String errorCode, String message, String errorLocation)

各パラメータの説明は、次の通りです。

パラメータ 説明
Throwable t 例外(Exception)情報
  • Throwable 情報設定時に Causeというフィールドを保存し、getCause()した値を保存
String errorCode NELOの errorCode フィールドにマッピングされる値
String message NELOの bodyにマッピングされる値
String location ログが発生した場所
  • location 情報を設定しない場合、Throwableでエラーが発生した場所を locationに保存

例)

try{

    int a = 10 / 0;

} catch (Exception e) {

    NeloLog.error(e,"Error_Code",e.getMessage());

}

クラッシュログ転送

例外状況で例外情報を含むクラッシュログを転送する APIは、次の通りです。

参考
  • ユーザーがクラッシュ関数を呼び出すと同時に、クラッシュログと DmpData フィールドが NELOに転送されます。
  • アプリのパフォーマンスのために必要な場合のみ、呼び出してください(推奨)。
static void crash(Throwable t, String errorCode,String message,String location)
static void crash(Throwable t, String errorCode,String message)

例)

try{
    int a = 10 / 0;

} catch (Exception e) {

    NeloLog.crash(e,"Error_Code",e.getMessage());

}

クラッシュコールバック API

クラッシュコールバック APIを使用してクラッシュ発生時に、クラッシュログを転送する前にユーザーが定義した関数を呼び出せます。クラッシュコールバック APIは、次の通りです。

static void setNeloCrashCallback(NeloCrashCallback neloCrashCallback)

各パラメータの説明は、次の通りです。

パラメータ 説明
NeloCrashCallback neloCrashCallback クラッシュ発生時に呼び出される関数
  • boolean beforeSendNeloCrash()
    • クラッシュログ転送の有無をリターン値で決定
  • boolean beforeInstanceSendNeloCrash(String instanceName) (現在未対応)
    • 複数のインスタンスを作成した場合、特定のインスタンスのみログを転送する場合、 instanceName値と比較してリターン値で決定
    • NeloLog.init()に初期化される場合の名前は Nelo2Constants.NELO_DEFAULT_INSTANCE_NAMEを使用
  • void finishInstanceSendNeloCrash(String instanceName) (現在未対応)
    • 特定のインスタンスのログ転送の完了時に呼び出す
  • void finishSendNeloCrash()
    • 全体クラッシュの転送完了時に呼び出す

例)

NeloLog.setNeloCrashCallback(new NeloCrashCallback() {
        @Override
        public boolean beforeSendNeloCrash() {
            Log.e("[AndroidApp]", "______________[[ beforeSendNeloCrash ]]__________________");
            return true;
        }

        @Override
        public boolean beforeInstanceSendNeloCrash(String instanceName) {
            Log.e("[AndroidApp]", "______________[[ beforeInstanceSendNeloCrash ]   " + instanceName + "]__________________");
            return Nelo2Constants.NELO_DEFAULT_INSTANCE_NAME.equalsIgnoreCase(instanceName);
        }

        @Override
        public void finishInstanceSendNeloCrash(String instanceName) {
            Log.e("[AndroidApp]", "______________[[ finishInstanceSendNeloCrash ]   " + instanceName + "]__________________");
        }

        @Override
        public void finishSendNeloCrash() {
            Log.e("[AndroidApp]", "______________[[ finishSendNeloCrash ]]__________________");
        }
    });

オプション設定 API

オプション設定 APIは、次の通りです。

NELO使用有無設定

NELOの使用有無を設定する APIは、次の通りです。

static boolean getNeloEnable()
static void setNeloEnable(boolean enabled)

各パラメータの説明は、次の通りです。

パラメータ 説明
boolean enabled NELO使用有無の設定
  • falseに設定すると、すべてのログ転送とファイル保存機能を中断

Debugモード使用有無設定

Debugモードを使用する場合、Logcatに詳細ログを記録します。Debugモードの使用有無を設定する APIは、次の通りです。

static boolean getDebug()
static void setDebug(boolean enabled)

各パラメータの説明は、次の通りです。

パラメータ 説明
boolean enabled Debugモードの使用有無
  • テスト環境でのみ trueに設定、運用環境では falseに設定

クラッシュ転送方法設定

クラッシュ転送方法を設定する APIは、次の通りです。

static CrashReportMode getCrashMode()
static void setCrashMode(CrashReportMode mode)

各パラメータの説明は、次の通りです。

パラメータ 説明
CrashReportMode mode アプリクラッシュの発生時にクラッシュを転送する方法設定
  • AndroidManifest.xmlファイルの CrashReportDialogと関連している
  • CrashReportMode.NONE: アプリクラッシュの発生時にクラッシュを転送しない
  • CrashReportMode.SLIENT: アプリクラッシュの発生時にユーザーに通知せず、クラッシュログ転送
  • CrashReportMode.DIALOG: アプリクラッシュの発生時にユーザーに Crash Report Dialogを知らせ、ユーザーが承認した場合のみクラッシュを転送
    • @NeloConfのアノテーションの以下の項目と関連している
      • resDialogTitle: Crash Report Dialogのタイトル。res/values/string.xmlに定義された Stringの ID
      • resDialogText: Crash Report Dialogの説明。res/values/string.xmlに定義された Stringの ID

ログ転送方法設定

ログ転送方法を設定する APIは、次の通りです。

static NeloSendMode getNeloSendMOde()
static void setNeloSendMOde(NeloSendMode mode)

各パラメータの説明は、次の通りです。

パラメータ 説明
NeloSendMode mode ログ転送方法設定

パラメータの設定値によるネットワーク別のログ転送方法は、次の通りです。

  • ALL

    ネットワーク状態 転送方法
    3g 転送
    Wi-Fi 転送
    Not Connected 転送しない、ファイル保存
  • ONLY_WIFI_WITH_FILE_SAVE

    ネットワーク状態 転送方法
    3g 転送しない、ファイル保存
    Wi-Fi 転送
    Not Connected 転送しない、ファイル保存
  • ONLY_WIFI_WITHOUT_FILE_SAVE

    ネットワーク状態 転送方法
    3g 転送しない、ファイル保存しない
    Wi-Fi 転送
    Not Connected 転送しない、ファイル保存しない
参考

ONLY_WIFI_WITH_FILE_SAVE または ONLY_WIFI_WITHOUT_FILE_SAVE 設定時にネットワーク状態を確認するための権限を追加します(Android SDK v1の権限追加を参照)。

ログ保存ファイルの最大容量設定

ログ保存ファイルの最大容量を設定する APIは、次の通りです。

参考
  • ログ保存ファイルの最大容量のデフォルト値は、1MB(1024x1024byte)です。
  • 保存するログの容量が設定した最大値より大きい場合、過去のデータを削除してから保存します。
  • ログをファイルに保存するように設定する方法は、ログ転送方法設定をご参照ください。
static int getMaxFileSize()
static void setMaxFileSize(int max_file_size)
static int getMaxFileSize(String instanceName)
static void setMaxFileSize(String instanceName, int max_file_size)

各パラメータの説明は、次の通りです。

パラメータ 説明
int max_file_size ログ保存ファイルの最大容量
String instanceName 動的インスタンス名

キューとファイルに保存したログをサーバに転送

キューとファイルに一時保存したログをサーバに転送する APIは、次の通りです。

static void flush()

ログ保存ファイルの現在容量照会

現在 NELOログが使用中のファイルの総容量を照会(リターン)する APIは、次の通りです。

static long getAllNeloSaveLogFileSize()

移行ファイルのサーバ転送有無設定

移行ファイルを読み取ってサーバへの転送有無を設定する APIは、次の通りです。

参考
  • ファイル名は InstanceNameとプロジェクト名を組み合わせてハッシュ(hash)値で作成された名前を使用します。
  • プロジェクト名とインスタンス名が変更され、既存ファイルを削除する場合、この関数を呼び出します。
  • flushFile値が true(デフォルト値)の場合は、移行ファイルを削除する前にすべての内容を読み取り、キューに保存します。
static boolean clearSavedNeloLogFile(boolean flushFile)

各パラメータの説明は、次の通りです。

パラメータ 説明
boolean flushFile 移行ファイルを読み取り、サーバに転送するかどうかを決定

ログレベル(loglevel)設定

ログレベル(loglevel)以上のログのみ転送する APIは、次の通りです。

参考
  • デフォルト値は Nelo2LogLevel.DEBUGです。
  • crash または flush のようにユーザーが明示的にログをサーバに転送リクエストする場合は LogLevel フィルタの値を無視します。
static Nelo2LogLevel getLogLevelFilter()
static void setLogLevelFilter(Nelo2LogLevel loglevel)

各パラメータの説明は、次の通りです。

パラメータ 説明
Nelo2LogLevel loglevel loglevel 以上のログのみ NELOに転送