move logs, eng_mode to AAPS directory

This commit is contained in:
Milos Kozak 2021-05-31 15:29:42 +02:00
parent 5867ff8b93
commit 596012ab10
7 changed files with 35 additions and 15 deletions

View file

@ -52,7 +52,8 @@
android:name="com.google.android.gms.car.application"
android:resource="@xml/automotive_app_desc" />
<activity android:name=".MainActivity">
<activity android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.MAIN" />
@ -60,7 +61,8 @@
</intent-filter>
</activity>
<activity android:name=".activities.PreferencesActivity" />
<activity android:name=".plugins.general.overview.activities.QuickWizardListActivity">
<activity android:name=".plugins.general.overview.activities.QuickWizardListActivity"
android:exported="false">
<intent-filter>
<action android:name="info.nightscout.androidaps.plugins.general.overview.activities.QuickWizardListActivity" />
@ -115,11 +117,11 @@
</intent-filter>
</receiver>
<!-- Receiver keepalive, scheduled every 30 min -->
<!-- Receiver keep alive, scheduled every 30 min -->
<receiver android:name=".receivers.KeepAliveReceiver" />
<!-- Receive ignore 5m, 15m, 30m requests for carb notifications -->
<receiver android:name=".plugins.aps.loop.CarbSuggestionReceiver"></receiver>
<receiver android:name=".plugins.aps.loop.CarbSuggestionReceiver" />
<!-- Auto start -->
<receiver

View file

@ -1,7 +1,7 @@
<configuration>
<!-- Create a file appender for a log in the application's data directory -->
<property name="EXT_FILES_DIR" scope="context"
value="${EXT_DIR:-/sdcard}/Android/data/${PACKAGE_NAME}/files" />
value="${EXT_DIR:-/sdcard}/AAPS/logs/${PACKAGE_NAME}" />
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${EXT_FILES_DIR}/AndroidAPS.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

View file

@ -63,7 +63,9 @@ class MaintenanceFragment : DaggerFragment() {
binding.logSend.setOnClickListener { maintenancePlugin.sendLogs() }
binding.logDelete.setOnClickListener {
uel.log(Action.DELETE_LOGS, Sources.Maintenance)
maintenancePlugin.deleteLogs()
Thread {
maintenancePlugin.deleteLogs(5)
}.start()
}
binding.navResetdb.setOnClickListener {
activity?.let { activity ->

View file

@ -35,6 +35,7 @@ class MaintenancePlugin @Inject constructor(
aapsLogger: AAPSLogger,
private val buildHelper: BuildHelper,
private val config: Config,
private val fileListProvider: PrefFileListProvider,
private val loggerUtils: LoggerUtils
) : PluginBase(PluginDescription()
.mainType(PluginType.GENERAL)
@ -53,7 +54,7 @@ class MaintenancePlugin @Inject constructor(
val recipient = sp.getString(R.string.key_maintenance_logs_email, "logs@androidaps.org")
val amount = sp.getInt(R.string.key_maintenance_logs_amount, 2)
val logs = getLogFiles(amount)
val zipDir = context.getExternalFilesDir("exports")
val zipDir = fileListProvider.ensureExportDirExists()
val zipFile = File(zipDir, constructName())
aapsLogger.debug("zipFile: ${zipFile.absolutePath}")
val zip = zipLogs(zipFile, logs)
@ -65,14 +66,14 @@ class MaintenancePlugin @Inject constructor(
//todo replace this with a call on startup of the application, specifically to remove
// unnecessary garbage from the log exports
fun deleteLogs() {
fun deleteLogs(keep: Int) {
val logDir = File(loggerUtils.logDirectory)
val files = logDir.listFiles { _: File?, name: String ->
(name.startsWith("AndroidAPS") && name.endsWith(".zip"))
}
Arrays.sort(files) { f1: File, f2: File -> f1.name.compareTo(f2.name) }
var delFiles = listOf(*files)
val amount = sp.getInt(R.string.key_logshipper_amount, 5)
val amount = sp.getInt(R.string.key_logshipper_amount, keep)
val keepIndex = amount - 1
if (keepIndex < delFiles.size) {
delFiles = delFiles.subList(keepIndex, delFiles.size)
@ -80,7 +81,7 @@ class MaintenancePlugin @Inject constructor(
file.delete()
}
}
val exportDir = File(loggerUtils.logDirectory, "exports")
val exportDir = fileListProvider.ensureExportDirExists()
if (exportDir.exists()) {
val expFiles = exportDir.listFiles()
for (file in expFiles) {

View file

@ -28,6 +28,7 @@ import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.RunningConfiguration
import info.nightscout.androidaps.plugins.general.maintenance.MaintenancePlugin
import info.nightscout.androidaps.queue.commands.Command
import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.FabricPrivacy
@ -72,6 +73,7 @@ class KeepAliveReceiver : DaggerBroadcastReceiver() {
@Inject lateinit var rxBus: RxBusWrapper
@Inject lateinit var commandQueue: CommandQueueProvider
@Inject lateinit var fabricPrivacy: FabricPrivacy
@Inject lateinit var maintenancePlugin: MaintenancePlugin
init {
(context.applicationContext as HasAndroidInjector).androidInjector().inject(this)
@ -93,6 +95,8 @@ class KeepAliveReceiver : DaggerBroadcastReceiver() {
localAlertUtils.checkStaleBGAlert()
checkPump()
checkAPS()
maintenancePlugin.deleteLogs(30)
return Result.success()
}

View file

@ -2,20 +2,22 @@ package info.nightscout.androidaps.utils.buildHelper
import info.nightscout.androidaps.BuildConfig
import info.nightscout.androidaps.interfaces.Config
import info.nightscout.androidaps.plugins.general.maintenance.LoggerUtils
import info.nightscout.androidaps.plugins.general.maintenance.PrefFileListProvider
import java.io.File
import javax.inject.Inject
import javax.inject.Singleton
@Singleton
class BuildHelper @Inject constructor(private val config: Config, loggerUtils: LoggerUtils) {
class BuildHelper @Inject constructor(
private val config: Config,
fileListProvider: PrefFileListProvider
) {
private var devBranch = false
private var engineeringMode = false
init {
val extFilesDir = loggerUtils.logDirectory
val engineeringModeSemaphore = File(extFilesDir, "engineering__mode")
val engineeringModeSemaphore = File(fileListProvider.ensureExtraDirExists(), "engineering__mode")
engineeringMode = engineeringModeSemaphore.exists() && engineeringModeSemaphore.isFile
devBranch = BuildConfig.VERSION.contains("-") || BuildConfig.VERSION.matches(Regex(".*[a-zA-Z]+.*"))

View file

@ -32,6 +32,7 @@ class PrefFileListProvider @Inject constructor(
private val path = File(Environment.getExternalStorageDirectory().toString())
private val aapsPath = File(path, "AAPS" + File.separator + "preferences")
private val exportsPath = File(path, "AAPS" + File.separator + "exports")
private val extraPath = File(path, "AAPS" + File.separator + "extra")
private const val IMPORT_AGE_NOT_YET_OLD_DAYS = 60
}
@ -90,13 +91,21 @@ class PrefFileListProvider @Inject constructor(
return File(path, resourceHelper.gs(R.string.app_name) + "Preferences")
}
fun ensureExportDirExists() {
fun ensureExportDirExists(): File {
if (!aapsPath.exists()) {
aapsPath.mkdirs()
}
if (!exportsPath.exists()) {
exportsPath.mkdirs()
}
return exportsPath
}
fun ensureExtraDirExists(): File {
if (!extraPath.exists()) {
extraPath.mkdirs()
}
return extraPath
}
fun newExportFile(): File {