Android app that displays the logcat buffer in a system overlay window

Related tags

Utility GhostLog
Overview

Ghost Log

Ghost Log is an Android application that displays the device logcat buffer in a system overlay window.

screenshot

Android app on Google Play

NOTE: Device root (superuser) access is required to read system logs on Android 4.1 and above.

Non-root users can still use Ghost Log with their own apps via intent integration - see below.

Features:

  • Persistent logcat display as a system overlay
  • Customisable log filters and display options
  • Auto filter by the current foreground Activity process
  • Quick access to pause/play, clear & share functions via rich notification
  • Integration support for non-root devices

Non-root Integration

Developers can use Ghost Log to display log messages generated by their own apps on non-rooted devices via a broadcast intent interface. This is currently in an experimental phase.

Integration will enable your app to receive messages from the Ghost Log app to start and stop a service inside your app which will monitor and broadcast all log output generated by your application processes back to Ghost Log for display.

NOTE: You should enable this integration for debug builds only to avoid exposing log output to third parties in production.

Gradle

If you are using the Gradle build system, simply add the following dependency in your build.gradle file:

dependencies {
    debugCompile 'com.readystatesoftware.ghostlog:ghostlog-integration:+@aar'
}

Using debugCompile (recommended) ensures the integration library is never compiled into a release build.

Ant/Eclipse

If you are using the old build system, download and place the integration library JAR inside your project libs folder and add the following to your AndroidManifest.xml (inside the <application> tag):

<!--Receives intents from Ghost Log app to start & stop the integration service-->
<receiver android:name="com.readystatesoftware.ghostlog.integration.IntegrationReceiver" 
    android:permission="com.readystatesoftware.ghostlog.permission.READ_LOGS" >
    <intent-filter>
        <action android:name="com.readystatesoftware.ghostlog.integration.COMMAND" />
    </intent-filter>
</receiver>
<!--Reads logs and broadcasts them to Ghost Log-->
<service android:name="com.readystatesoftware.ghostlog.integration.IntegrationService" />

Credits

Author: Jeff Gilfelt

Uses elements from CatLog by Nolan Lawson

License

Copyright (C) 2014 readyState Software Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Comments
  • Gradle version doesn't actually work (non-root)

    Gradle version doesn't actually work (non-root)

    1. I installed the app from the PlayStore
    2. Added compile 'com.readystatesoftware.ghostlog:ghostlog-integration:+' to build.gradle
    3. Turn it on, but it doesn't work.

    I can confirm the JAR + manifest code works.

    Am I doing something wrong? Thoughts?

    Thanks!

    opened by mbarany 5
  • Add integration service + receiver to AndroidManifest.

    Add integration service + receiver to AndroidManifest.

    Gradle automatically merges the manifest of the lib project into an app project. This skips the step of adding the receiver and service to the app manifest and reduces errors.

    opened by hvisser 4
  • Limit sniffing on broadcasts

    Limit sniffing on broadcasts

    Right now, AFAICT, anyone can listen in on broadcasts from an integration-enabled app to GhostLog and therefore sniff on log messages. In theory, that should not happen in production, as nobody should ship an app with GhostLog integration enabled.

    In theory, I'd have hair. :-)

    Three ways come to mind to help limit this:

    1. Have the Intent for the broadcast specify the component name, instead of (or in addition to) the action string. This will limit your ability to refactor this portion of GhostLog, so as not to break prior integration code, but it would preclude other apps from receiving the broadcast. However, this would require you to move your BroadcastReceiver into your manifest, as opposed to the registerReceiver() that you have today.
    2. Use an IntentFilter that sets the priority to Integer.MAX_VALUE and use an ordered broadcast, aborting it after you receive it. This means that a potential sniffer would have to set up their receiver first. However, again, I think your use of registerReceiver() may be a problem here -- while I have not tried playing with competing apps, one registered in the manifest, one registered via registerReceiver(), I would not be the least bit surprised if the manifest one gets in first, at least in certain circumstances.
    3. Use a custom permission that integration-enabled apps must request via <uses-permission>. This would at least alert users to other apps that want to listen in on GhostLog broadcasts. Alas, you cannot use signature-level permissions, since the integration-enabled apps aren't written by you, in general.
    bug 
    opened by commonsguy 3
  • Migrate away from AsyncTask in the integration library

    Migrate away from AsyncTask in the integration library

    In light of this https://github.com/android/platform_frameworks_base/commit/719c44e03b97e850a46136ba336d729f5fbd1f47 it's probably not a good idea to use a long running AsyncTask in a 3rd party lib.

    opened by jgilfelt 0
  • Chain to superclass from IntegrationService constructor

    Chain to superclass from IntegrationService constructor

    Your empty IntegrationService constructor does not chain to the superclass. At present, that does not pose a problem, but it could in future versions of Android. I would either delete the IntegrationService constructor or have it chain to the superclass to be safe.

    bug 
    opened by commonsguy 0
  • issue with super user in android

    issue with super user in android

    I have android device which is rooted. I need to perform Runtime.getRuntime().exec("su") .and I have added READ_LOGs permission in manifest also. But even though i have root device its still gives me access denied. I have seen most of the blogs still the issue remains same. Can you please tell me Is there anything missing here

    opened by Adeesh2411 0
  •  Put full documentation inside the app too

    Put full documentation inside the app too

    Be sure to put full instructions and documentation within the app. Sometimes we are offline and have no way to look up what the app is supposed to do.

    opened by jidanni 0
  • I can't allow root acess

    I can't allow root acess

    Symptons: I turn GhostLog on, SuperSu dialog popups but is unclickable.

    I believe that maybe the overlay is starting showing before the SuperSU 'dialog box' and that makes the 'dialog' unclickable for security reasons...

    opened by PedroHLC 4
Releases(integration-v1.0.3)
A dual screen capable home screen launcher for Android phones with dual displays, such as the LG V60, G8X & Velvet.

Duality-Launcher A dual screen capable home screen launcher for Android phones with dual displays, such as the LG V60, G8X & Velvet

Russ Nash 6 Sep 8, 2022
An Android App which is capable of accessing system apps

Android_Project_Kotlin In this Project I am building an Android App which is capable of accessing system apps. This project is written in Kotlin and I

null 0 Dec 13, 2021
Trail is a simple logging system for Java and Android. Create logs using the same API and the library will detect automatically in which platform the code is running.

Trail Trail is a simple logging system for Java and Android. Create logs using the same API and the library will detect automatically in which platfor

Mauricio Togneri 13 Aug 29, 2022
📭 Extension to Ktor’s routing system to add object oriented routing and much more. 💜

?? Ktor Routing Extensions Extension to Ktor’s routing system to add object-oriented routing and much more. ?? Why? This extension library was created

Noelware 6 Dec 28, 2022
POC Simulate Backend Biometric Authentication with AIDL (client app/server app)

poc-simulate-bio-auth-aidl POC Simulate Backend Biometric Authentication with AIDL (client app/server app) #How to use Install server app and run Inst

gundamD 0 Dec 30, 2021
Android Shared preference wrapper than encrypts the values of Shared Preferences. It's not bullet proof security but rather a quick win for incrementally making your android app more secure.

Secure-preferences - Deprecated Please use EncryptedSharedPreferences from androidx.security in preferenced to secure-preference. (There are no active

Scott Alexander-Bown 1.5k Dec 24, 2022
Android library which makes it easy to handle the different obstacles while calling an API (Web Service) in Android App.

API Calling Flow API Calling Flow is a Android library which can help you to simplify handling different conditions while calling an API (Web Service)

Rohit Surwase 19 Nov 9, 2021
Android Utilities Library build in kotlin Provide user 100 of pre defined method to create advanced native android app.

Android Utilities Library build in kotlin Provide user 100 of pre defined method to create advanced native android app.

Shahid Iqbal 4 Nov 29, 2022
A util for setting status bar style on Android App.

StatusBarUtil A util for setting status bar style on Android App. It can work above API 19(KitKat 4.4). 中文版点我 Sample Download StatusBarUtil-Demo Chang

Jaeger 8.8k Jan 6, 2023
Android library for viewing, editing and sharing in app databases.

DbInspector DbInspector provides a simple way to view the contents of the in-app database for debugging purposes. There is no need to pull the databas

Infinum 924 Jan 4, 2023
Android Market In-app Billing Library

Update In-app Billing v2 API is deprecated and will be shut down in January 2015. This library was developed for v2 a long time ago. If your app is st

Robot Media 533 Nov 25, 2022
Routable, an in-app native URL router, for Android

Routable Routable is an in-app native URL router, for Android. Also available for iOS. Usage Set up your app's router and URLs: import com.usepropelle

Clay Allsopp 476 Nov 11, 2022
Small Android library to help you incorporate MVP, Passive View and Presentation Model patterns in your app

DroidMVP About DroidMVP is a small Android library to help you incorporate the MVP pattern along with Passive View and Presentation Model (yes, those

Andrzej Chmielewski 225 Nov 29, 2022
Utility for detecting and notifying when your Android app goes background / becomes foreground

Foredroid Utility for detecting and notifying when your Android app goes background / becomes foreground. API-level 14+. Usage: Initialise Foreground

Steve Liles 151 Nov 29, 2022
Android app launcher module

Launcher Android launcher app Contains appDataSdk module which exposes app list data App showing applist with launcher (consumes appDataSdk module for

Vikas Mane 4 Jun 6, 2022
an android app to browse urls before open

link eye - kuesji koesnu - 8/8/2021 an android app to browse urls before open try to open a link, select link eye and choose always to start using

kuesji koesnu 25 Dec 31, 2022
A compose friendly way to deal with in app updates on android

In-App update compose A way to make in app updates in compose How to include in your project The library is available via MavenCentral: allprojects {

Stefan Wärting 25 Dec 31, 2022
Simple-Claim-Form - Android App for creating a simple dynamic form with MVVM architecture

Simple-Claim-Form Android App for creating a simple dynamic form with MVVM archi

Shubham Gangpuri 1 Aug 14, 2022
Criminal-Intent - An android app used to record office crimes

What is Criminal Intent? CriminalIntent records the details of “office crimes” –

Mohammad Rashid 1 Feb 11, 2022