From bb0fc53ad9477236b412429a07661d407cdc5978 Mon Sep 17 00:00:00 2001 From: Aleksandr Soloshenko Date: Fri, 27 Dec 2024 07:01:31 +0700 Subject: [PATCH] [receiver] add logging --- .../smsgateway/modules/logs/LogsService.kt | 20 +++++---- .../modules/logs/db/LogEntriesDao.kt | 2 +- .../smsgateway/modules/receiver/Module.kt | 4 +- .../modules/receiver/ReceiverService.kt | 45 +++++++++++++++++++ 4 files changed, 61 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/me/capcom/smsgateway/modules/logs/LogsService.kt b/app/src/main/java/me/capcom/smsgateway/modules/logs/LogsService.kt index 3ada929..172e2e1 100644 --- a/app/src/main/java/me/capcom/smsgateway/modules/logs/LogsService.kt +++ b/app/src/main/java/me/capcom/smsgateway/modules/logs/LogsService.kt @@ -31,20 +31,24 @@ class LogsService( return dao.selectByPeriod(from, to) } - suspend fun insert( + fun insert( priority: LogEntry.Priority, module: String, message: String, context: Any? = null ) { - dao.insert( - LogEntry( - priority, - module, - message, - context = context?.let { gson.toJsonTree(it) } + try { + dao.insert( + LogEntry( + priority, + module, + message, + context = context?.let { gson.toJsonTree(it) } + ) ) - ) + } catch (e: Exception) { + e.printStackTrace() + } } suspend fun truncate() { diff --git a/app/src/main/java/me/capcom/smsgateway/modules/logs/db/LogEntriesDao.kt b/app/src/main/java/me/capcom/smsgateway/modules/logs/db/LogEntriesDao.kt index 6619ae9..f87e810 100644 --- a/app/src/main/java/me/capcom/smsgateway/modules/logs/db/LogEntriesDao.kt +++ b/app/src/main/java/me/capcom/smsgateway/modules/logs/db/LogEntriesDao.kt @@ -14,7 +14,7 @@ interface LogEntriesDao { fun selectLast(): LiveData> @Insert - suspend fun insert(entry: LogEntry) + fun insert(entry: LogEntry) @Query("DELETE FROM logs_entries WHERE createdAt < :until") suspend fun truncate(until: Long) diff --git a/app/src/main/java/me/capcom/smsgateway/modules/receiver/Module.kt b/app/src/main/java/me/capcom/smsgateway/modules/receiver/Module.kt index 756a81f..9f9f643 100644 --- a/app/src/main/java/me/capcom/smsgateway/modules/receiver/Module.kt +++ b/app/src/main/java/me/capcom/smsgateway/modules/receiver/Module.kt @@ -5,4 +5,6 @@ import org.koin.dsl.module val receiverModule = module { singleOf(::ReceiverService) -} \ No newline at end of file +} + +val MODULE_NAME = "receiver" diff --git a/app/src/main/java/me/capcom/smsgateway/modules/receiver/ReceiverService.kt b/app/src/main/java/me/capcom/smsgateway/modules/receiver/ReceiverService.kt index ab82fe9..c6f5dc5 100644 --- a/app/src/main/java/me/capcom/smsgateway/modules/receiver/ReceiverService.kt +++ b/app/src/main/java/me/capcom/smsgateway/modules/receiver/ReceiverService.kt @@ -4,6 +4,8 @@ import android.content.Context import android.os.Build import android.provider.Telephony import me.capcom.smsgateway.helpers.SubscriptionsHelper +import me.capcom.smsgateway.modules.logs.LogsService +import me.capcom.smsgateway.modules.logs.db.LogEntry import me.capcom.smsgateway.modules.receiver.data.InboxMessage import me.capcom.smsgateway.modules.receiver.events.MessageReceivedEvent import me.capcom.smsgateway.modules.webhooks.WebHooksService @@ -14,15 +16,37 @@ import java.util.Date class ReceiverService : KoinComponent { private val webHooksService: WebHooksService by inject() + private val logsService: LogsService by inject() fun export(context: Context, period: Pair) { + logsService.insert( + LogEntry.Priority.DEBUG, + MODULE_NAME, + "ReceiverService::export - start", + mapOf("period" to period) + ) + select(context, period) .forEach { process(context, it) } + + logsService.insert( + LogEntry.Priority.DEBUG, + MODULE_NAME, + "ReceiverService::export - end", + mapOf("period" to period) + ) } fun process(context: Context, message: InboxMessage) { + logsService.insert( + LogEntry.Priority.DEBUG, + MODULE_NAME, + "ReceiverService::process - message received", + mapOf("message" to message) + ) + val event = MessageReceivedEvent( message = message.body, phoneNumber = message.address, @@ -36,9 +60,23 @@ class ReceiverService : KoinComponent { ) webHooksService.emit(WebHookEvent.SmsReceived, event) + + logsService.insert( + LogEntry.Priority.DEBUG, + MODULE_NAME, + "ReceiverService::process - message processed", + mapOf("event" to event) + ) } fun select(context: Context, period: Pair): List { + logsService.insert( + LogEntry.Priority.DEBUG, + MODULE_NAME, + "ReceiverService::select - start", + mapOf("period" to period) + ) + val projection = mutableListOf( Telephony.Sms._ID, Telephony.Sms.ADDRESS, @@ -84,6 +122,13 @@ class ReceiverService : KoinComponent { } } + logsService.insert( + LogEntry.Priority.DEBUG, + MODULE_NAME, + "ReceiverService::select - end", + mapOf("messages" to messages.size) + ) + return messages } } \ No newline at end of file