logback-android
is a lite version of logback
that runs on Android. This library provides a highly configurable logging framework for Android apps, supporting multiple log destinations simultaneously:
- files
- SQLite databases
- logcat
- sockets
- syslog
See Wiki for documentation.
For logback-android@1.x
, see the 1.x
branch.
-
Create a new "Basic Activity" app in Android Studio.
-
In
app/build.gradle
, add the following dependencies:dependencies { implementation 'org.slf4j:slf4j-api:2.0.7' implementation 'com.github.tony19:logback-android:3.0.0' }
If using
logback-android
in unit tests, either use Robolectric, or use this config instead:dependencies { implementation 'org.slf4j:slf4j-api:2.0.7' implementation 'com.github.tony19:logback-android:3.0.0' testImplementation 'ch.qos.logback:logback-classic:1.2.11' } configurations.testImplementation { exclude module: 'logback-android' }
-
Create
app/src/main/assets/logback.xml
containing:<configuration xmlns="https://tony19.github.io/logback-android/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://tony19.github.io/logback-android/xml https://cdn.jsdelivr.net/gh/tony19/logback-android/logback.xsd" > <appender name="logcat" class="ch.qos.logback.classic.android.LogcatAppender"> <tagEncoder> <pattern>%logger{12}</pattern> </tagEncoder> <encoder> <pattern>[%-20thread] %msg</pattern> </encoder> </appender> <root level="DEBUG"> <appender-ref ref="logcat" /> </root> </configuration>
-
In
MainActivity.java
, add the following imports:import org.slf4j.Logger; import org.slf4j.LoggerFactory;
-
...and modify
onOptionsItemSelected()
to log "hello world":@Override public boolean onOptionsItemSelected(MenuItem item) { Logger log = LoggerFactory.getLogger(MainActivity.class); log.info("hello world"); // ... }
-
Build and start the app.
-
Open logcat for your device (via the Android Monitor tab in Android Studio).
-
Click the app menu, and select the menu-option. You should see "hello world" in logcat.
Gradle release
dependencies {
implementation 'org.slf4j:slf4j-api:2.0.7'
implementation 'com.github.tony19:logback-android:3.0.0'
}
Gradle snapshot (unstable)
repositories {
maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
}
dependencies {
implementation 'org.slf4j:slf4j-api:2.0.7'
implementation 'com.github.tony19:logback-android:3.0.1-SNAPSHOT'
}
Use these commands to create the AAR:
git clone git://github.com/tony19/logback-android.git
cd logback-android
scripts/makejar.sh
The file is output to:
./build/logback-android-3.0.0-debug.aar
-
CD into
./scripts/release
. -
Install deps:
npm install
-
Make sure
local.properties
contains the following keys, required to sign artifacts and upload to Maven Central:# output from `gpg --export-secret-keys <PUBKEY_LAST8> | base64` signing.key= # PUBKEY_LAST8 from `gpg --list-keys` (last 8 digits of pub key) signing.keyId= # password for key (can be empty if key has no password) signing.password= # path to secring.gpg file from `gpg --keyring secring.gpg --export-secret-keys > ~/.gnupg/secring.gpg` signing.secretKeyRingFile=/Users/tony/.gnupg/secring.gpg # OSS sonatype username at https://issues.sonatype.org ossrhUsername= # OSS sonatype password at https://issues.sonatype.org ossrhPassword= # profile ID from https://oss.sonatype.org/#stagingProfiles (select profile, and copy profile ID from hash in address bar) sonatypeStagingProfileId=b2413418ab44f
-
Do a dry-run:
npm run start --dry
-
If everything looks good, rerun without
--dry
. -
Confirm the artifacts were uploaded in https://repo1.maven.org/maven2/com/github/tony19/logback-android/3.0.0/.