- 印刷する
- PDF
Android SDK v1
- 印刷する
- PDF
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をインストールするための事前準備事項は、次の通りです。
- NAVERクラウドプラットフォームコンソールで、プロジェクトを作成します。
- 作成したプロジェクト詳細情報画面で txtToken値を確認します。
- Android SDK v1をダウンロードします。
2. Android SDK v1のインストール
Android SDK v1をインストールする方法は、次の通りです。
- ダウンロードした SDKファイルの圧縮を解凍します。
- SDKをインストールする Androidプロジェクトの
libs
フォルダに SDKファイルを保存します。- Thriftプロトコルの使用時:
nelo2-android-sdk-common-SDK버전명.jar
、nelo2-android-sdk-thrift-SDK버전명.jar
ファイルを保存 - HTTPSプロトコルの使用時:
nelo2-android-sdk-common-SDK버전명.jar
、nelo2-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') } .....
- Thriftプロトコルの使用時:
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の情報
|
String reportServer | ログ収集サーバのアドレス
|
int serverPort | ログ収集サーバのポート情報
|
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)情報
|
String errorCode | NELOの errorCode フィールドにマッピングされる値 |
String message | NELOの body にマッピングされる値 |
String 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 | クラッシュ発生時に呼び出される関数
|
例)
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使用有無の設定
|
Debugモード使用有無設定
Debugモードを使用する場合、Logcatに詳細ログを記録します。Debugモードの使用有無を設定する APIは、次の通りです。
static boolean getDebug()
static void setDebug(boolean enabled)
各パラメータの説明は、次の通りです。
パラメータ | 説明 |
---|---|
boolean enabled | Debugモードの使用有無
|
クラッシュ転送方法設定
クラッシュ転送方法を設定する APIは、次の通りです。
static CrashReportMode getCrashMode()
static void setCrashMode(CrashReportMode mode)
各パラメータの説明は、次の通りです。
パラメータ | 説明 |
---|---|
CrashReportMode mode | アプリクラッシュの発生時にクラッシュを転送する方法設定
|
ログ転送方法設定
ログ転送方法を設定する 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に転送 |