### Prerequisites If you want to build the source, make sure your NDK version is not higher than **16.1.4479499**. ### Installation Add the following content in the project `build.gradle` file: ```groovy compile 'com.dianping.android.sdk:logan:1.2.4' ``` ### Usage **You must init Logan before you use it**. For example: ```java LoganConfig config = new LoganConfig.Builder() .setCachePath(getApplicationContext().getFilesDir().getAbsolutePath()) .setPath(getApplicationContext().getExternalFilesDir(null).getAbsolutePath() + File.separator + "logan_v1") .setEncryptKey16("0123456789012345".getBytes()) .setEncryptIV16("0123456789012345".getBytes()) .build(); Logan.init(config); ``` After you init Logan, you can use Logan to write a log. Like this: ```java Logan.w("test logan", 1); ``` Logan.w method has two parameters: - **String log**: What you want to write; - **int type**: Log type. This is very important, best practices below content will show you how to using log type parameter. Note: The type value "1" is already used internally by logan. It is recommended that the business party's log type use the new type value. If you want to write log to file immediately, you need to call flush function: ```java Logan.f(); ``` If you want to see all of the log file information, you need to call getAllFilesInfo function: ```java Map map = Logan.getAllFilesInfo(); ``` - key: Log file date; - value: Log file size(Bytes). #### Upload this upload method is recommend, you can use this method upload your logs directly into your server. we also provide logan server source code ,you can find it in Logan open souce Repository. ```java final String url = "https://openlogan.inf.test.sankuai.com/logan/upload.json"; Logan.s(url, loganTodaysDate(), "testAppId", "testUnionid", "testdDviceId", "testBuildVersion", "testAppVersion", new SendLogCallback() { @Override public void onLogSendCompleted(int statusCode, byte[] data) { final String resultData = data != null ? new String(data) : ""; Log.d(TAG, "upload result, httpCode: " + statusCode + ", details: " + resultData); } }); ``` Logan internal provides logging upload mechanism, in view of the need to upload the log to do the preprocessing. If you want to upload log file, you need to implement a SendLogRunnable: ```java public class RealSendLogRunnable extends SendLogRunnable { @Override public void sendLog(File logFile) { // logFile: After the pretreatment is going to upload the log file // Must Call finish after send log finish(); if (logFile.getName().contains(".copy")) { logFile.delete(); } } } ``` **NOTE: You must call finish method after send log**. As written in the code above Finally you need to call Logan.s method: ```java Logan.s(date, mSendLogRunnable); ``` One of the first parameter is date array(yyyy-MM-dd). ### Permission If you upload log file to server, you need INTERNET permission. If you write log to SD card or read log info from SD card, you need WRITE_EXTERNAL_STORAGE and READ_EXTERNAL_STORAGE permission