--- title: "Android SDK v2" slug: "elsa2-sdk-androidv2" updated: 2026-09-17T09:07:51Z published: 2026-09-17T09:07:51Z canonical: "guide.ncloud-docs.com/elsa2-sdk-androidv2" --- > ## Documentation Index > Fetch the complete documentation index at: https://guide.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # Android SDK v2 Classic/VPC 환경에서 이용 가능합니다. Android SDK v2 사용에서는 Effective Log Search & Analytics 2.0 서비스가 제공하는 Android SDK v2의 사용 방법을 설명합니다. SDK를 사용하는 순서는 다음와 같습니다. [1. 사전 준비](/docs/elsa2-sdk-androidv2#1%EC%82%AC%EC%A0%84%EC%A4%80%EB%B9%84) [2. SDK 설치](/docs/elsa2-sdk-androidv2#2AndroidSDKv2%EC%84%A4%EC%B9%98) [3. SDK 초기화](/docs/elsa2-sdk-androidv2#3AndroidSDKv2%EC%B4%88%EA%B8%B0%ED%99%94) [4. SDK 권한 추가](/docs/elsa2-sdk-androidv2#4AndroidSDKv2%EA%B6%8C%ED%95%9C%EC%B6%94%EA%B0%80) [5. SDK 사용](/docs/elsa2-sdk-androidv2#5SDK%EC%82%AC%EC%9A%A9) ## 1. 사전 준비 Android SDK를 설치하기 위한 사전 준비 사항은 다음과 같습니다. 1. 네이버 클라우드 플랫폼의 콘솔에서 [프로젝트를 생성](/docs/elsa2-project)해 주십시오. 2. 생성한 [프로젝트의 상세 정보 화면](/docs/elsa2-project#%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EC%83%81%EC%84%B8%EC%A0%95%EB%B3%B4%ED%99%95%EC%9D%B8)에서 txtToken 값을 확인해 주십시오. 3. Android SDK v2를 [다운로드](/docs/elsa2-sdk-download)해 주십시오. ## 2. Android SDK v2 설치 Android SDK v2을 설치하는 방법은 다음과 같습니다. 1. 다운로드한 SDK 파일의 압축을 풀어 주십시오. 2. 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') } ..... ``` ## 3. Android SDK v2 초기화 Effective Log Search & Analytics 2.0 Android SDK는 다음 두 가지 방법으로 초기화할 수 있습니다. - Main Activity에서 init 메서드 호출 - 앱 크래시 발생 시, Crash Dialog를 생성하지 않고 로그 전송 - <예시> ``` public class MainActivity extends Activity { ..... @Override protected void onCreate(Bundle savedInstanceState) { ..... NeloLog.init(getApplication(), "elsa-col.ncloud.com", 10006, "__프로젝트_아이디__", "__프로젝트버전__"); ..... } } ``` - 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](/docs/elsa2-sdk-androidv2#%EC%B4%88%EA%B8%B0%ED%99%94API)를 참고해 주십시오. - Application에서 init 메서드를 호출하여 초기화하는 것을 권장합니다. ## 4. Android SDK v2 권한 추가 네트워크 상태, 디바이스 정보, 통신사, Logcat 등의 정보를 가져오기 위한 권한을 추가해야 합니다. AndroidManifest.xml 파일에 다음 내용을 추가해 주십시오. ``` ..... /** AndroidManifest.xml **/ ..... ..... ..... ..... ..... ``` ## 5. SDK 사용 다음의 Effective Log Search & Analytics 2.0 Android SDK를 사용하는 실제 코드 예를 참고하여 프로젝트에 로그를 전송해 주십시오. ``` ..... import com.navercorp.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(),"Effective Log Search & Analytics-COLLECTOR-URL",new ThriftFactory(),"ELSA-PROJECT-NAME","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 v2 API 명세 Android SDK v2은 다음과 같은 API를 제공합니다. - [초기화 API](/docs/elsa2-sdk-androidv2#%EC%B4%88%EA%B8%B0%ED%99%94API) - [System Field 설정 API](/docs/elsa2-sdk-androidv2#SystemField%EC%84%A4%EC%A0%95API) - [Custom Field 설정 API](/docs/elsa2-sdk-androidv2#CustomField%EC%84%A4%EC%A0%95API) - [Logcat 설정 API](/docs/elsa2-sdk-androidv2#Logcat%EC%84%A4%EC%A0%95API) - [Logcat 전송 API](/docs/elsa2-sdk-androidv2#Logcat%EC%A0%84%EC%86%A1API) - [로그 전송 API](/docs/elsa2-sdk-androidv2#%EB%A1%9C%EA%B7%B8%EC%A0%84%EC%86%A1API) - [로그 전송 API(예외 포함)](/docs/elsa2-sdk-androidv2#%EB%A1%9C%EA%B7%B8%EC%A0%84%EC%86%A1API%EC%98%88%EC%99%B8%ED%8F%AC%ED%95%A8) - [크래시 콜백 API](/docs/elsa2-sdk-androidv2#%ED%81%AC%EB%9E%98%EC%8B%9C%EC%BD%9C%EB%B0%B1API) - [옵션 설정 API](/docs/elsa2-sdk-androidv2#%EC%98%B5%EC%85%98%EC%84%A4%EC%A0%95API) ### 초기화 API Android SDK v2은 호출 방법에 따른 초기화 함수를 제공합니다. 참고 - NeloLog를 사용하기 전에 NeloLog를 초기화해야 정상 동작합니다. 초기화는 1번만 실행합니다. - Crash Report Dialog를 사용하기 위해서는 Application에서 초기화해야 합니다. #### Main Activity에서 초기화 Main Activity에서 초기화하는 API는 다음과 같습니다. ``` static boolean init(Application application, String reportServer, ProtocolFactory protocolFactory, String appId, String projectVersion) static boolean init(Application application, String reportServer, ProtocolFactory protocolFactory, 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 | | `ProtocolFacotry protocolFactory` | 로그 수집 서버의 연결 프로토콜 - Thrift: new ThriftFactory() - HTTPS: new HTTPSFactory | | `String appId` | 프로젝트 키([프로젝트 상세 정보](/docs/elsa2-project#%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EC%83%81%EC%84%B8%EC%A0%95%EB%B3%B4%ED%99%95%EC%9D%B8)에서 확인) | | `String appVersion` | 로그를 전송할 앱의 버전 정보 | | `String userId` | 전송할 사용자 아이디(옵션) | <예시> ``` NeloLog.init(getApplication(), "elsa-col.ncloud.com", new ThriftFactory(), "72356c50401b8e20_testproject", "1.0.0"); ``` #### Application에서 초기화 Application에서 초기화하는 API는 다음과 같습니다. 반드시 `@NeloConf` 애노테이션을 함께 입력해야 합니다. ``` boolean init (Application application) ``` 각 파라미터에 대한 설명은 다음과 같습니다. | 파라미터 | 설명 | | --- | --- | | `Application application` | Android의 애플리케이션 정보. 일반적으로 `getApplication()` 입력 | <예시> ``` @NeloConf( collectorUrl = "elsa-col.ncloud.com", // Effective Log Search & Analytics Collector URL (required) protocolFactoryClass = ThriftFactory.class, // Effective Log Search & Analytics Protocol Type, you can choose to use ThriftFactory.class or HTTPSFactory.class (required) projectName = "72356c50401b8e20_testproject", // Effective Log Search & Analytics projectId (required) mode = CrashReportMode.DIALOG, // Effective Log Search & Analytics CrashReportMode (optional, Default : SLIENT) sendMode = NeloSendMode.ALL, // Effective Log Search & Analytics SendMode (optional, Default : ALL) debug = true, // Effective Log Search & Analytics Debug mode (optional, Default : false) logSource = "Effective Log Search & Analytics-android", // Effective Log Search & Analytics Log Source (optional, Default : nelo2-android) logType = "development", // Effective Log Search & Analytics 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) enableSendLogCatEvents = true, // Enable LogCat (optional, Default : false) enableSendLogCatMain = true, // Enable LogCat (optional, Default : false) enableSendLogCatRadio = true // Enable LogCat (optional, Default : false) ) public class MainApplication extends Application { ..... @Override protected void onCreate() { ..... NeloLog.init(this); ..... } } ..... ``` ### System Field 설정 API System Field 값을 설정하는 API는 다음과 같습니다. 설정한 값은 이후 보내는 모든 로그에서 동일하게 전달됩니다. #### 사용자 아이디 설정 사용자 아이디를 설정하는 API는 다음과 같습니다. ``` static void void setUserID(String userID) static void setUserID(String instanceName, String userID) ``` 각 파라미터에 대한 설명은 다음과 같습니다. | 파라미터 | 설명 | | --- | --- | | `String userID` | 사용자 아이디 | | `String instanceName` | 동적 인스턴스 이름 | <예시> ``` 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"); ``` ### Custom Field 설정 API Custom Field 값을 설정하는 API는 다음과 같습니다. #### Custom Field 키와 값 설정 Custom Field 키와 값을 설정하는 API는 다음과 같습니다. 설정한 값은 이후 보내는 모든 로그에서 동일한 사용자 지정 메시지 형태로 전달됩니다. ``` static void putCustomMessage(String key, String value) static void putCustomMessage(String instanceName, String key, String value) ``` 각 파라미터에 대한 설명은 다음과 같습니다. | 파라미터 | 설명 | | --- | --- | | `String key` | 저장할 값의 키(필드 이름) | | `String value` | 저장될 값의 값(사용자 메시지) | | `String instanceName` | 동적 인스턴스 이름 | <예시> ``` NeloLog.putCustomMessage("test","test value"); ``` #### 사용자 지정 메시지 삭제 Custom Field의 키를 삭제하여 동일한 키를 가진 사용자 지정 메시지를 삭제하는 API는 다음과 같습니다. ``` static void removeCustomMessage(String key) static void removeCustomMessage(String instanceName, String key) ``` 각 파라미터에 대한 설명은 다음과 같습니다. | 파라미터 | 설명 | | --- | --- | | `String key` | 삭제할 값의 키(필드 이름) | | `String instanceName` | 동적 인스턴스 이름 | <예시> ``` NeloLog.removeCustomMessage("test"); ``` #### 사용자 지정 메시지 모두 삭제 설정된 모든 사용자 지정 메시지를 삭제하는 API는 다음과 같습니다. ``` static void clearCustomMessage() static void clearCustomMessage(String instanceName) ``` 각 파라미터에 대한 설명은 다음과 같습니다. | 파라미터 | 설명 | | --- | --- | | `String instanceName` | 동적 인스턴스 이름 | <예시> ``` NeloLog.clearCustomMessage(); ``` ### Logcat 설정 API Logcat을 설정하는 API는 다음과 같습니다. 참고 - 이 API는 앱에서 크래시 발생 시 `LogCat buffer`의 전송 여부를 설정합니다. - Logcat의 `LogCat buffer` 종류에는 기본적으로 `Main`, `Radio`, `Events`가 있습니다. ``` static void setEnableLogcatMain(boolean enabled) static void setEnableLogcatRadio(boolean enabled) static void setEnableLogcatEvents(boolean enabled) static void setEnableLogcatMain(String instanceName,boolean enabled) static void setEnableLogcatRadio(String instanceName,boolean enabled) static void setEnableLogcatEvents(String instanceName,boolean enabled) ``` 각 파라미터에 대한 설명은 다음과 같습니다. | 파라미터 | 설명 | | --- | --- | | `boolean enabled` | `Logcat buffer` 전송 여부 설정 | | `String instanceName` | 동적 인스턴스 이름 | <예시> ``` NeloLog.setEnableLogcatMain(true); ``` ### Logcat 전송 API Logcat을 전송하는 API는 다음과 같습니다. 참고 - 이 함수는 특정 시간에 Nelo에 `logcat buffer`를 전송합니다. - 이 함수는 `setEnableLogcat` 함수와 관련이 없습니다. - 이 함수는 무거운 작업입니다. 가급적 반복적인 호출은 하지 마십시오(권장). ``` static void sendLogcat(String errorCode, String message) static void sendLogcat(String errorCode, String message, String errorLocation) static void sendLogcatWithInstanceName(String instanceName, String errorCode, String message) static void sendLogcatWithInstanceName(String instanceName, String errorCode, String message, String errorLocation) ``` 각 파라미터에 대한 설명은 다음과 같습니다. | 파라미터 | 설명 | | --- | --- | | `String errorCode` | NELO의 `errorCode` 필드에 매핑되는 값 | | `String message` | NELO의 `body`에 매핑되는 값 | | `String location` | 로그가 발생한 위치 | | `String instanceName` | 동적 인스턴스 이름 | <예시> ``` NeloLog.sendLogcat("ErrorCode","Message"); ``` ### 로그 전송 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","Test value","location"); NeloLog.debug("test 2","Test value ") ``` ### 로그 전송 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`에 저장함 | | `String instanceName` | 동적 인스턴스 이름 | <예시> ``` 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 v2 권한 추가](/docs/elsa2-sdk-androidv2#4AndroidSDKv2%EA%B6%8C%ED%95%9C%EC%B6%94%EA%B0%80) 참고) #### 로그 저장 파일의 최대 크기 설정 로그 저장 파일의 최대 크기를 설정하는 API는 다음과 같습니다. 참고 - 로그 저장 파일의 최대 크기의 기본값은 1 MB(1024 x 1024 byte)입니다. - 저장되는 로그의 크기가 설정한 최댓값보다 크면, 지난 데이터를 삭제한 후 저장됩니다. - 로그를 파일에 저장하도록 설정하는 방법은 [로그 전송 방법 설정](/docs/elsa2-sdk-androidv2#%EB%A1%9C%EA%B7%B8%EC%A0%84%EC%86%A1%EB%B0%A9%EB%B2%95%EC%84%A4%EC%A0%95)을 참고해 주십시오. ``` 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 void setLogLevelFilter(Nelo2LogLevel loglevel) static Nelo2LogLevel getLogLevelFilter() ``` 각 파라미터에 대한 설명은 다음과 같습니다. | 파라미터 | 설명 | | --- | --- | | `Nelo2LogLevel loglevel` | `loglevel` 이상의 로그만 NELO로 전송 |