Class for capturing and parsing Android device logs using ADB.
pip install logcatframe
Tested against Windows / Python 3.11 / Anaconda
Args:
- adb_path (str): Path to the ADB executable.
- device_serial (str): Serial number of the target Android device.
- print_output (bool): Flag to control whether to print log output to the console.
- su (bool): Flag indicating whether to use 'su' (superuser) for logcat command (default is True).
- clear_logcat (bool): Flag indicating whether to clear existing logcat logs before starting (default is True).
Methods:
- __init__(self, adb_path, device_serial, print_output, su=True, clear_logcat=True):
Initializes a LogCatFrame instance.
- start_recording(self):
Starts capturing Android device logs using the specified ADB path and device serial.
If `clear_logcat` is True, it clears existing logcat logs before starting.
The captured logs are stored in the instance's `alldata` attribute.
- _read_stdout(self, pr):
Internal method for reading and printing logcat output.
Used by the `start_recording` method in a separate thread.
- parse_all_data(self, as_pandas=False):
Parses the captured logs into a list of dictionaries.
If `as_pandas` is True, converts the list into a Pandas DataFrame (requires Pandas to be installed).
- parse_activities(self):
Parses executed activities from the captured logs.
Returns a list of tuples containing the executed command and associated variables.
- get_short_path_name(long_name):
Returns the short path name for the given long file name.
Only applicable on Windows; on other platforms, it returns the input unchanged.
from logcatframe import LogCatFrame
adblog = LogCatFrame(
adb_path=r"C:\Android\android-sdk\platform-tools\adb.exe",
device_serial="emulator-5554",
print_output=True,
su=True,
clear_logcat=True,
)
adblog.start_recording()
df=adblog.parse_all_data(as_pandas=True)
listoflist=adblog.parse_all_data(as_pandas=False)
activities=adblog.parse_activities()
from PrettyColorPrinter import add_printer # optional
add_printer(1)
print(df)
print(listoflist)
print(activities)
# [('am start -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -f 0x10200000 -n com.android.settings/.Settings -b [47,217][161,363]',
# [['act', 'android.intent.action.MAIN'],
# ['cat', '[android.intent.category.LAUNCHER]'],
# ['flg', '0x10200000'],
# ['cmp', 'com.android.settings/.Settings'],
# ['bnds', '[47,217][161,363] (has extras)']]),
# ('am start -f 0x8000 -n com.android.settings/.Settings$PowerUsageSummaryActivity',
# [['flg', '0x8000'],
# ['cmp',
# 'com.android.settings/.Settings$PowerUsageSummaryActivity (has extras)']]),
# ('am start -f 0x8000 -n com.android.settings/.Settings$DisplaySettingsActivity',
# [['flg', '0x8000'],
# ['cmp',
# 'com.android.settings/.Settings$DisplaySettingsActivity (has extras)']]),
# ('am start -a com.android.intent.action.SHOW_BRIGHTNESS_DIALOG -n com.android.systemui/.settings.BrightnessDialog',
# [['act', 'com.android.intent.action.SHOW_BRIGHTNESS_DIALOG'],
# ['cmp', 'com.android.systemui/.settings.BrightnessDialog']]),
# ('am start -f 0x8000 -n com.android.settings/.Settings$SystemDashboardActivity',
# [['flg', '0x8000'],
# ['cmp',
# 'com.android.settings/.Settings$SystemDashboardActivity (has extras)']]),
# ('am start -a android.intent.action.MAIN -n com.android.settings/.SubSettings',
# [['act', 'android.intent.action.MAIN'],
# ['cmp', 'com.android.settings/.SubSettings (has extras)']])]
Metadata
Release files for logcatframe 0.10
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| logcatframe-0.10.tar.gz | 11.1 kB | Without provenance | Details for logcatframe-0.10.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| logcatframe-0.10-py3-none-any.whl | Python 3 | none | any | Details for logcatframe-0.10-py3-none-any.whl |
Total release size: 24.5 kB
Release files / logcatframe-0.10.tar.gz
| Download URL | logcatframe-0.10.tar.gz |
|---|---|
| Size | 11.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ea190a91d3d2019adaa9d9dc58379627bc3c5dd34a0a533bd860a7a19c4682e9
|
|
BLAKE2b-256 checksum How to use checksums |
6f7742af0a396590793a6f66dab39a2ff2ed5e805713c349ae802a7d379b6a31
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.5
|
Release files / logcatframe-0.10-py3-none-any.whl
| Download URL | logcatframe-0.10-py3-none-any.whl |
|---|---|
| Size | 13.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
37f5ef688fb3632c433ca5bf610652f3df86bd2492d57fcf90ace92f4abc01c2
|
|
BLAKE2b-256 checksum How to use checksums |
6874518fc3abb4bb669da23c044cfcaaab6568182424f7cbfbf69b55f3f671ad
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.5
|
Security for logcatframe 0.10
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.