LunaSea includes an on-device logging system that helps debug crashes, issues, and support requests. LunaSea stores 3 different levels of logs:
Warning: Warning logs are non-crashing and non-critical errors that have occurred on the device. Warning logs would occur when failing to load an image, passing an incorrect encryption key when trying to restore a backup, etc.
Error: Error logs are non-crashing but critical errors that have occurred on the device. Error logs would occur on network errors, connection issues, errors returned from the module, etc.
Fatal: Fatal logs are crashing errors or unhandled errors that have occurred on the device. Fatal logs would occur when LunaSea fails to complete the boot process, fails to render the UI, etc.
When a handled error occurs, a toast notification will appear that allows you to directly view the error that just occurred.
LunaSea also stores a list of the last 100 logs that have occurred on the device. To access the history of logs, simply go to the Settings, enter the "System" page and tap "Logs".
LunaSea offers the ability to export your logs into a JSON file, which can be easily sent to the developer to help debug the problems. The exported logs also include additional information, including the code-execution stack trace to see exactly where in the code the error occurred.
To export your logs, simply go to the Settings, enter the "System" page and tap "Logs". On this page, tap the "Export" button available at the bottom. After a short amount of time, a system-level sharesheet should appear with the ability to share or save the exported logs to your device.
LunaSea offers the ability to clear all recorded logs from your device. While an available option, it is not recommended to clear your logs often as LunaSea will internally ensure the log database does not grow to an obscenely large size.
To clear your logs, simply go to the Settings, enter the "System" page and tap "Logs". On this page, tap the "Clear" button available at the bottom.
LunaSea integrates Firebase Crashlytics to help catch errors that may not be obvious to users or occur internally and out of sight. Firebase Crashlytics is enabled by default, but can be optionally completely disabled (explained below).
The following errors are not sent to Firebase Crashlytics to protect user's privacy and private information:
Networking Errors: Any and all networking errors are not sent (but are stored on the on-device logger).
Encryption Errors: Any and all errors related to encrypting or decrypting configurations for backups are not sent (but are stored on the on-device logger).
Disabling Firebase Crashlytics is as simple as heading to the Settings, entering the "System" page, and toggling off Firebase Crashlytics.
LunaSea integrates Firebase Analytics to help Firebase Crashlytics acquire breadcrumb information in any logs sent. Firebase Analytics is enabled by default, but can be optionally completely disabled (explained below).
Breadcrumbs can almost be seen as a "history" of pages you have been on, which allows developers to understand how you got to the point of experiencing the error.
LunaSea also tracks these additional analytic metrics:
When a user opens the app.
Gives a general idea of how many users are actively using LunaSea
No identifying information is attached to this metric
Disabling Firebase Analytics is as simple as heading to the Settings, entering the "System" page, and toggling off Firebase Analytics.