diff --git a/modules/react-native-status/android/src/main/java/im/status/ethereum/module/StatusModule.java b/modules/react-native-status/android/src/main/java/im/status/ethereum/module/StatusModule.java index 756348cc18..746c79f0ce 100644 --- a/modules/react-native-status/android/src/main/java/im/status/ethereum/module/StatusModule.java +++ b/modules/react-native-status/android/src/main/java/im/status/ethereum/module/StatusModule.java @@ -114,6 +114,38 @@ class StatusModule extends ReactContextBaseJavaModule implements LifecycleEventL this.getReactApplicationContext().getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit("gethEvent", params); } + private String prepareLogsFile() { + String gethLogFileName = "geth.log"; + File pubDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); + File logFile = new File(pubDirectory, gethLogFileName); + + try { + logFile.setReadable(true); + File parent = logFile.getParentFile(); + if (!parent.exists()) { + parent.mkdirs(); + } + logFile.createNewFile(); + logFile.setReadable(true); + Uri gethLogUri = Uri.fromFile(logFile); + try { + Log.d(TAG, "Attach to geth.log to instabug " + gethLogUri.getPath()); + Instabug.setFileAttachment(gethLogUri, gethLogFileName); + } catch (NullPointerException e) { + Log.d(TAG, "Instabug is not initialized!"); + } + + String gethLogFilePath = logFile.getAbsolutePath(); + Log.d("ExtDirLog", gethLogFilePath); + + return gethLogFilePath; + } catch (Exception e) { + Log.d(TAG, "Can't create geth.log file! " + e.getMessage()); + } + + return null; + } + private void doStartNode(final String defaultConfig) { Activity currentActivity = getCurrentActivity(); @@ -179,11 +211,14 @@ class StatusModule extends ReactContextBaseJavaModule implements LifecycleEventL try { JSONObject customConfig = new JSONObject(defaultConfig); JSONObject jsonConfig = new JSONObject(config); - String gethLogFileName = "geth.log"; - jsonConfig.put("LogEnabled", !TextUtils.isEmpty(this.logLevel)); - jsonConfig.put("LogFile", gethLogFileName); + + String gethLogFilePath = prepareLogsFile(); + boolean logsEnabled = (gethLogFilePath != null) && !TextUtils.isEmpty(this.logLevel); + String dataDir = root + customConfig.get("DataDir"); + jsonConfig.put("LogEnabled", logsEnabled); + jsonConfig.put("LogFile", gethLogFilePath); jsonConfig.put("LogLevel", TextUtils.isEmpty(this.logLevel) ? "ERROR" : this.logLevel.toUpperCase()); - jsonConfig.put("DataDir", root + customConfig.get("DataDir")); + jsonConfig.put("DataDir", dataDir); jsonConfig.put("NetworkId", customConfig.get("NetworkId")); try { Object upstreamConfig = customConfig.get("UpstreamConfig"); @@ -195,26 +230,6 @@ class StatusModule extends ReactContextBaseJavaModule implements LifecycleEventL } jsonConfig.put("KeyStoreDir", newKeystoreDir); - String gethLogPath = dataFolder + "/" + gethLogFileName; - File logFile = new File(gethLogPath); - try { - logFile.setReadable(true); - File parent = logFile.getParentFile(); - if (!parent.exists()) { - parent.mkdirs(); - } - logFile.createNewFile(); - logFile.setReadable(true); - } catch (Exception e) { - Log.d(TAG, "Can't create geth.log file!"); - } - Uri gethLogUri = Uri.fromFile(logFile); - try { - Log.d(TAG, "Attach to geth.log to instabug " + gethLogUri.getPath()); - Instabug.setFileAttachment(gethLogUri, gethLogFileName); - } catch (NullPointerException e) { - Log.d(TAG, "Instabug is not initialized!"); - } config = jsonConfig.toString(); } catch (JSONException e) {