RxLogs

General

Category
Free
Tag
Logging
License
MIT License
Min SDK
16 (Android 4.1 Jelly Bean)
Registered
Jan 4, 2018
Favorites
0
Link
https://github.com/umair13adil/PLog
See also
TimberLorry
Android TAO Log
Logger
Specialized Logger
jlog

Additional

Language
Kotlin
Version
1.0.14 (Sep 11, 2020)
Created
Jul 5, 2017
Updated
Oct 20, 2020
Owner
Muhammad Umair Adil (umair13adil)
Contributor
Muhammad Umair Adil (umair13adil)
1
Activity
Badge
Generate
Download
Source code
APK file

Promotion

RxLogs Advanced Logging

PLog and DataLog (Loggers)

A file based advanced logging framework written in Kotlin.

Overview

PLogs provides quick & simple file logging solution. All logs are saved to files in storage path provided. These logs are helpful when developer wants to analyze user activities within the app. A new log file is created every hour on a user event. These logs can be filtered and sorted easily. Logs can easily be exported as zip file base on filter type. This zip file can be uploaded to server on export. PLogs also provide functionality to arrange data logs into a predefined directory structure. These logs can be used for a specific events within the app. Logs can be saved as encrypted data.

Read more about RxLogs usage on this Medium article:

Sending logs from apps in real-time using ELK stack & MQTT

Features

  1. Logs events in files created separately every hour with 'PLogs' logger. (24 hours)
  2. Files can be compressed and exported for time and day filters
  3. Clear Logs easily
  4. Save logs to app's storage path
  5. Export Logs to custom path as zip file
  6. RxJava2 support
  7. Custom Log formatting
  8. CSV support
  9. Custom timestamps support
  10. Custom data logging support with 'DataLogs' logger.
  11. Encryption support added
  12. Auto Log system crashes
  13. Multiple directory structures
  14. Print logs as String
  15. Export all or single types of logs
  16. XML configuration support for internal persistence
  17. Logger events Subscription
  18. Advanced Automation for deleting logs automatically
  19. Exports HTML formatted exceptions
  20. ELK Stack Supported See more about it here.
  21. MQTT Support
  22. Added logs queueing for offline support (MQTT Feature)

Setup

Add module to your project:

Step 1. Add the JitPack repository to your build file

Add it in your root build.gradle at the end of repositories:

    allprojects {
    repositories {
        maven { url 'https://jitpack.io' }
    }
}

Step 2. Add the dependency

    dependencies {
    implementation 'com.github.umair13adil:RxLogs:[Latest_Version]'
    }

Usage

Add following implementation in your Application class.

class MainApplication : Application() {
    
        override fun onCreate() {
            super.onCreate()
    
            setUpPLogger() //Initialize PLogger here
        }

private fun setUpPLogger() {
             val logsPath = "PLogs"
             
                     val logsConfig = LogsConfig(
                             isDebuggable = true,
                             savePath = logsPath,
                             zipFileName = "MyLogs",
                             exportPath = logsPath + File.separator + "PLogsOutput"
                     )

                     PLog.applyConfigurations(logsConfig, saveToFile = true, context = context) //Initialize configurations
                   
         }
}

Where are my logs stored?

Your logs can be found in the path of your app's directory in storage:

--> Android/data/[YOUR_APP_PACKAGE]/files/[YOUR_LOGS_FOLDER_NAME]/Logs/


2. Simple Warning Log

    PLog.logThis(TAG, "method_name", "This is a warning message!", LogLevel.WARNING)

3. Error Log

    PLog.logThis(TAG, "method_name", "This is a error message!", LogLevel.ERROR)

4. Severe Log

    PLog.logThis(TAG, "method_name", "This is a severe error message!", LogLevel.SEVERE)

5. Exception Log

    PLog.logThis(TAG, "reportError", Exception("This is an Exception!"))

6. Throwable Log

    PLog.logThis(TAG, "reportError", Throwable("This is an Throwable!"))

7. Exception Log with Info

    PLog.logThis(TAG, "reportError", info = "Some Info", exception = Exception("This is an Exception!"), level =  LogLevel.ERROR)

8. Throwable Log with Info

    PLog.logThis(TAG, "reportError", info = "Some Info", throwable = Throwable("This is an Exception!"), level =  LogLevel.SEVERE)

ELK Elastic Stack Support

To configure set this flag to true:

PLogMetaInfoProvider.elkStackSupported =true

Send additional Meta info for better filtering at LogStash dashboard. This has to be set once on application start.

PLogMetaInfoProvider.setMetaInfo(MetaInfo(
                /**App**/
                appId =BuildConfig.APPLICATION_ID,
                appName = getString(R.string.app_name),
                appVersion =BuildConfig.VERSION_NAME,
                language ="en-US",

                /**Environment**/
                environmentId =BuildConfig.APPLICATION_ID,
                environmentName =BuildConfig.BUILD_TYPE,

                /**Organization**/
                organizationId ="9975",
                organizationUnitId ="24",
                organizationName ="BlackBox",

                /**User**/
                userId ="12112",
                userName ="Umair",
                userEmail ="m.umair.adil@gmail.com",
                deviceId ="12",

                /**Device**/
                deviceSerial ="SK-78",
                deviceBrand =Build.BRAND,
                deviceName =Build.DEVICE,
                deviceManufacturer =Build.MANUFACTURER,
                deviceModel =Build.MODEL,
                deviceSdkInt =Build.VERSION.SDK_INT.toString(),
                batteryPercent ="87",

                /**Location**/
                latitude =0.0,
                longitude =0.0,

                /**Labels**/
                labels = hashMapOf(Pair("env", "dev"))
        ))