đź“„The reliable, generic, fast and flexible logging framework for Android

Overview

logback-android CircleCI branch Codacy Badge

v2.0.0

Overview

logback-android brings the power of logback to Android. This library provides a highly configurable logging framework for Android apps, supporting multiple log destinations simultaneously:

  • files
  • SQLite databases
  • logcat
  • sockets
  • syslog
  • email

Runs on Android 2.3 (SDK 9) or higher. See Wiki for documentation.

For v1.x, see the 1.x branch.

Quick Start

  1. Create a new "Basic Activity" app in Android Studio.

  2. In app/build.gradle, add the following dependencies:

    dependencies {
      compile 'org.slf4j:slf4j-api:1.7.25'
      compile 'com.github.tony19:logback-android:2.0.0'
    }
  3. Create app/src/main/assets/logback.xml containing:

    <configuration>
      <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>
  4. In MainActivity.java, add the following imports:

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
  5. ...and modify onOptionsItemSelected() to log "hello world":

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        Logger log = LoggerFactory.getLogger(MainActivity.class);
        log.info("hello world");
        // ...
    }
  6. Build and start the app.

  7. Open logcat for your device (via the Android Monitor tab in Android Studio).

  8. Click the app menu, and select the menu-option. You should see "hello world" in logcat.

Download

Gradle release

dependencies {
  compile 'org.slf4j:slf4j-api:1.7.25'
  compile 'com.github.tony19:logback-android:2.0.0'
}

Gradle snapshot (unstable)

repositories {
  maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
}

dependencies {
  compile 'org.slf4j:slf4j-api:1.7.25'
  compile 'com.github.tony19:logback-android:2.0.1-SNAPSHOT'
}

Build

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-2.0.0-debug.aar

Comments
  • RollingPolicy MaxHistory not deleting old files

    RollingPolicy MaxHistory not deleting old files

    seems like it already fixed in https://jira.qos.ch/browse/LOGBACK-162

    but doesn't work for android

    my config

          LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
          loggerContext.reset();
    
          RollingFileAppender<ILoggingEvent> rollingFileAppender = new RollingFileAppender<>();
          rollingFileAppender.setContext(loggerContext);
          rollingFileAppender.setAppend(true);
          rollingFileAppender.setFile(logDirectory + File.separator + logFileName + ".log");
    
          SizeAndTimeBasedFNATP<ILoggingEvent> fileNamingPolicy = new SizeAndTimeBasedFNATP<>();
          fileNamingPolicy.setContext(loggerContext);
          fileNamingPolicy.setMaxFileSize(fileSizeKB + "KB");
    
          TimeBasedRollingPolicy<ILoggingEvent> rollingPolicy = new TimeBasedRollingPolicy<>();
          rollingPolicy.setContext(loggerContext);
          rollingPolicy.setFileNamePattern(logDirectory + File.separator + logFileName + ".%d{yyyy-MM-dd}.%i.log");
          rollingPolicy.setMaxHistory(historyLength);
          rollingPolicy.setTimeBasedFileNamingAndTriggeringPolicy(fileNamingPolicy);
          rollingPolicy.setParent(rollingFileAppender);  // parent and context required!
          rollingPolicy.start();
    
          PatternLayoutEncoder encoder = new PatternLayoutEncoder();
          encoder.setContext(loggerContext);
          encoder.setCharset(Charset.forName("UTF-8"));
          encoder.setPattern("%date %level [%thread] %msg%n");
          encoder.start();
    
          rollingFileAppender.setRollingPolicy(rollingPolicy);
          rollingFileAppender.setEncoder(encoder);
          rollingFileAppender.start();
    
          // add the newly created appenders to the root logger;
          // qualify Logger to disambiguate from org.slf4j.Logger
          ch.qos.logback.classic.Logger root = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
          root.setLevel(level);
          root.addAppender(rollingFileAppender);
    
    archived 
    opened by AlexandrSalin 20
  • Oracle DB appender not logging into relevant columns?

    Oracle DB appender not logging into relevant columns?

    If I use the standard ORACLE.SQL ddl file, I get 0 rows/data logged into the backend. But if I modify the standard Oracle.sql I get logged yet incomplete rows : Below is the data from the 3 Oracle tables after Logback'ing 8 logs w/ the simplified Oracle.sql ddl. Any other columns not listed are NULL.

    0 rows in table LOGGING_EVENT_EXCEPTION
    
    8 rows in table LOGGING_EVENT
    TIMESTMP    REFERENCE_FLAG  EVENT_ID
    1.38988E+12 1   1006
    1.38988E+12 1   1010
    1.38988E+12 1   1012
    1.38988E+12 1   1016
    1.38988E+12 1   1018
    1.38988E+12 1   1004
    1.38988E+12 1   1008
    1.38988E+12 1   1014
    
    
    8 rows in table  LOGGING_EVENT_PROPERTY
    EVENT_ID
    1006
    1010
    1012
    1016
    1018
    1004
    1008
    1014
    

    I modified the ORACLE.SQL ddl and removed all primary/foreign keys. I also made all columns NULL. These modifications insure that there is no balking/refusal on the backend side. It ensures that all data will be logged regardless of primary/foreign key data integrity:

    create sequence LOGGING_EVENT_ID_SEQ
    minvalue 1000
    increment by 2
    cache 1000;
    
    
    CREATE TABLE logging_event
      (
        timestmp NUMBER(20) NULL,
        formatted_message VARCHAR2(4000) NULL,
        logger_name VARCHAR(254) NULL,
        level_string VARCHAR(254) NULL,
        thread_name VARCHAR(254) NULL,
        reference_flag SMALLINT NULL,
        arg0 VARCHAR(254) NULL,
        arg1 VARCHAR(254) NULL,
        arg2 VARCHAR(254) NULL,
        arg3 VARCHAR(254) NULL,
        caller_filename VARCHAR(254) NULL,
        caller_class VARCHAR(254) NULL,
        caller_method VARCHAR(254) NULL,
        caller_line CHAR(4) NULL,
        event_id NUMBER(10) NULL
    --    event_id NUMBER(10) PRIMARY KEY
      );
    
    
    -- the / suffix may or may not be needed depending on your SQL Client
    -- Some SQL Clients, e.g. SQuirrel SQL has trouble with the following
    -- trigger creation command, while SQLPlus (the basic SQL Client which
    -- ships with Oracle) has no trouble at all.
    
    CREATE TRIGGER logging_event_id_seq_trig
      BEFORE INSERT ON logging_event
      FOR EACH ROW
      BEGIN
        SELECT logging_event_id_seq.NEXTVAL
        INTO :NEW.event_id
        FROM DUAL;
      END;
    /
    
    CREATE TABLE logging_event_property
      (
        event_id         NUMBER(10) NULL,
        mapped_key VARCHAR2(254) NULL,
        mapped_value VARCHAR2(1024) NULL
      );
    
    CREATE TABLE logging_event_exception
      (
        event_id NUMBER(10) NULL,
        i SMALLINT NULL,
        trace_line VARCHAR2(254) NULL
      );
    /
    -------------------------------------  
    

    LOGCAT output: note the entry:

    01-16 07:42:02.826: I/System.out(23786): 07:42:02,835 |-INFO in ch.qos.logback.core.db.DriverManagerConnectionSource@425d5588 - supportsGetGeneratedKeys=false
    
    
    01-16 07:42:02.576: E/Trace(23786): error opening trace file: No such file or directory (2)
    01-16 07:42:02.693: I/System.out(23786): 07:42:02,652 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [assets/logback.xml] at [assets/logback.xml]
    01-16 07:42:02.701: I/System.out(23786): 07:42:02,707 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.classic.db.DBAppender]
    01-16 07:42:02.701: I/System.out(23786): 07:42:02,709 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [DB]
    01-16 07:42:02.803: D/libc(23786): Forward DNS query to netd(h=localhost s=^)
    01-16 07:42:02.826: I/System.out(23786): 07:42:02,834 |-INFO in ch.qos.logback.core.db.DriverManagerConnectionSource@425d5588 - Driver name=Oracle JDBC driver
    01-16 07:42:02.826: I/System.out(23786): 07:42:02,835 |-INFO in ch.qos.logback.core.db.DriverManagerConnectionSource@425d5588 - Driver version=10.1.0.5.0
    01-16 07:42:02.826: I/System.out(23786): 07:42:02,835 |-INFO in ch.qos.logback.core.db.DriverManagerConnectionSource@425d5588 - supportsGetGeneratedKeys=false
    01-16 07:42:02.826: I/System.out(23786): 07:42:02,837 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.classic.android.LogcatAppender]
    01-16 07:42:02.826: I/System.out(23786): 07:42:02,838 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [logcat]
    01-16 07:42:02.842: I/System.out(23786): 07:42:02,849 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
    01-16 07:42:02.873: I/System.out(23786): 07:42:02,883 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to ALL
    01-16 07:42:02.873: I/System.out(23786): 07:42:02,884 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [DB] to Logger[ROOT]
    01-16 07:42:02.873: I/System.out(23786): 07:42:02,885 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [logcat] to Logger[ROOT]
    01-16 07:42:02.873: I/System.out(23786): 07:42:02,885 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
    01-16 07:42:02.881: I/System.out(23786): 07:42:02,886 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@42561688 - Registering current configuration as safe fallback point
    01-16 07:42:03.076: D/dalvikvm(23786): GC_CONCURRENT freed 1251K, 14% free 8668K/10019K, paused 12ms+13ms, total 48ms
    01-16 07:42:03.170: V/com.ntier.android.jdbctest.MainActivity(23786): 07:42:02.888 14.01.16 [main]  TRACE   c.n.android.jdbctest.MainActivity - onCreate
    01-16 07:42:03.287: V/com.ntier.android.util.AndroidConnectDB(23786): 07:42:03.214 14.01.16 [main]  TRACE   c.n.android.util.AndroidConnectDB - :onPreExecute()
    01-16 07:42:03.381: V/com.ntier.android.jdbctest.MainActivity(23786): 07:42:03.300 14.01.16 [main]  TRACE   c.n.android.jdbctest.MainActivity - com.ntier.android.util.AndroidConnectDB@42580310
    01-16 07:42:03.443: D/libEGL(23786): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
    01-16 07:42:03.498: D/libEGL(23786): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
    01-16 07:42:03.506: D/libEGL(23786): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
    01-16 07:42:03.897: D/OpenGLRenderer(23786): Enabling debug mode 0
    01-16 07:42:04.162: V/com.ntier.android.util.AndroidConnectDB(23786): 07:42:03.306 14.01.16 [AsyncTask #1]  TRACE   c.n.android.util.AndroidConnectDB - doInBackground()
    01-16 07:42:04.357: V/com.ntier.android.util.AndroidConnectDB(23786): 07:42:04.170 14.01.16 [AsyncTask #1]  TRACE   c.n.android.util.AndroidConnectDB - network detected
    01-16 07:42:04.443: V/com.ntier.android.util.AndroidConnectDB(23786): 07:42:04.363 14.01.16 [AsyncTask #1]  TRACE   c.n.android.util.AndroidConnectDB - network connected
    01-16 07:42:04.545: V/com.ntier.android.util.AndroidConnectDB(23786): 07:42:04.454 14.01.16 [AsyncTask #1]  TRACE   c.n.android.util.AndroidConnectDB - ConnectOra constructor
    01-16 07:42:04.693: V/com.ntier.android.util.AndroidConnectDB(23786): 07:42:04.626 14.01.16 [main]  TRACE   c.n.android.util.AndroidConnectDB - :onPostExecute()!
    

    I'm using Eclipse ADT latest , logback-android-1.0.10-2.jar , slf4j-api-1.7.5.jar

    LOGBACK image attached.

    Model: Droid RAZR Android version: 4.1.2

    If there is a better way to attach a text file I'd like to know. It seems as if this Github only allows images to be attached and not text files?

    archived 
    opened by JohnDonaldson 20
  • Can't use logback for Android JUnit in Android Studio?

    Can't use logback for Android JUnit in Android Studio?

    image image

    I had put "logback.xml" in src\test\assets\logback.xml src\main\assets\logback.xml src\androidTest\assets\logback.xml

    but seems it still not working

    logback file below:

    <configuration debug='true'>
        <property name="LOG_DIR" value="/sdcard/logback" />
        <appender name="LOG_CAT_APPENDER" class="ch.qos.logback.classic.android.LogcatAppender">
            <encoder class="demo2017.demos.baozs.com.common.logback.ExtendedPatternLayoutEncoder">
                <pattern>%d{HH:mm:ss.SSS} %PID %TID [%thread] %-5level %logger{36} - %msg%n</pattern>
            </encoder>
        </appender>
        <appender name="LOG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${LOG_DIR}/logfile.log</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${LOG_DIR}/logfile.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
                <maxHistory>7</maxHistory>
                <totalSizeCap>1GB</totalSizeCap>
            </rollingPolicy>
            <encoder class="demo2017.demos.baozs.com.common.logback.ExtendedPatternLayoutEncoder">
                <pattern>%d{HH:mm:ss.SSS} %-4relative %PID %TID [%thread] %-5level %logger{35} - %msg %n</pattern>
            </encoder>
        </appender>
        <appender name="FLOW_LOG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${LOG_DIR}/flow_logfile.log</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${LOG_DIR}/flow_logfile.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
                <maxHistory>7</maxHistory>
                <totalSizeCap>1GB</totalSizeCap>
            </rollingPolicy>
            <encoder class="demo2017.demos.baozs.com.common.logback.ExtendedPatternLayoutEncoder">
                <pattern>%d{HH:mm:ss.SSS} %-4relative %PID %TID [%thread] %-5level %logger{35} - %msg %n</pattern>
            </encoder>
        </appender>
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>%d{HH:mm:ss.SSS} %PID %TID [%thread] %-5level %logger{36} - %msg</pattern>
            </encoder>
        </appender>
        <root level="DEBUG">
            <appender-ref ref="LOG_CAT_APPENDER" />
            <appender-ref ref="LOG_FILE" />
        </root>
        <logger name="flow" level="DEBUG" additivity="false">
            <appender-ref ref="FLOW_LOG_FILE"/>
        </logger>
        <logger name="test" level="DEBUG" additivity="false">
            <appender-ref ref="STDOUT"/>
        </logger>
    </configuration>
    

    after some trying

    add testCompile 'ch.qos.logback:logback-classic:1.2.3'

    it works but got Class path contains multiple SLF4J bindings. warning..

    wontfix archived 
    opened by Gohan 14
  • HTTP POST method?

    HTTP POST method?

    Hi Mr. Tony, I saw your side project "loggly".

    Are there any plans to implement HTTP POST logging to a webserver from android logback?

    Thanks for a fantastic product!

    question archived 
    opened by JDOaktown 14
  • Adding a FileBufferingSocketAppender

    Adding a FileBufferingSocketAppender

    The FileBufferingSocketAppender and it's auxiliary classes provide the following features in addition to a regular SocketAppender:

    • events are buffered (serialized) to disk
    • events are send in batches
    • events are send in intervals
    • events are persistent, even when there is currently no socket connection or there is an error during transmission
      • events will be evicted from disk in a FIFO mode, defined through a file count quota (amount of log events)

    The new appender takes the following configuration:

    • logFolder (required)
    • fileExtension (default: .ser)
    • batchSize (default: 50)
    • readInterval (default: 1min)
    • fileCountQuota (default: 500)

    Furthermore it provides the same configuration interfaces as the SocketAppender. Internally it holds an instance of the SocketAppender of which it manages the state and to which it delegates the previously mentioned configuration interface calls.

    Discussion/Questions:

    1. why is there no SSLSocketAppender in the logback-android fork?
    2. what would be the best "logback way" to make the current implementation not use a composition but an aggregation instead? so that the SocketAppender would not be instantiated by the FileBufferingSocketAppenderbut through the regular logback mechanisms.
    3. why is there a configuration check (address != null) in the SocketAppenderBase.append (now tryAppend) method?
    4. What would be the best way to do a full-integration test of the new appender?
    5. Though the new appender is mostly useful in context of remote logging with android it might also makes sense to push it all the way upstream to the logback origin and rebase the logback-android project to it. What do you think?
    archived 
    opened by SierraGolf 14
  • feat!: upgrade slf4j to 2.0.3

    feat!: upgrade slf4j to 2.0.3

    Not sure if this is quite the right way of going about it, but was noticing if I updated slf4j to 2.0.x I wasn't getting logs showing up in Android any longer.

    It looks like the only breaking change was in a few places Marker turned to List<Marker> so I updated throughout the code to take this wherever it was needed.

    Tried it out against an android project and logging is now working again, so seems to work.

    I have a feeling this will probably make things not work any longer with older slf4j though, so you may also not want to merge it, or make a different version for slf4j 2.x or something.

    fix #249

    opened by compscidr 13
  • Provide default logback configuration

    Provide default logback configuration

    How/where to set the initial logger configuration? The code sample shows the configuration happening upon the open of an Activity. I would like the configuration file read from the android device before the first activity is started.

    archived 
    opened by phreed 13
  • ContextInitializer.autoConfig() doesn't close resource that could be leak

    ContextInitializer.autoConfig() doesn't close resource that could be leak

    implementation 'com.github.tony19:logback-android:1.3.0-2'

    Run

    StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
              .detectAll()
              .penaltyLog()
              .build());
    StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
              .detectAll()
              .penaltyLog()
              .build());
    
    ContextInitializer ci = new ContextInitializer(lc);
    ci.autoConfig();
    

    got the error

    A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
        java.lang.Throwable: Explicit termination method 'close' not called
            at dalvik.system.CloseGuard.open(CloseGuard.java:180)
            at java.util.zip.ZipFile.<init>(ZipFile.java:185)
            at java.util.jar.JarFile.<init>(JarFile.java:199)
            at libcore.net.url.JarURLConnectionImpl.openJarFile(JarURLConnectionImpl.java:136)
            at libcore.net.url.JarURLConnectionImpl.findJarFile(JarURLConnectionImpl.java:125)
            at libcore.net.url.JarURLConnectionImpl.connect(JarURLConnectionImpl.java:82)
            at libcore.net.url.JarURLConnectionImpl.getInputStream(JarURLConnectionImpl.java:215)
            at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(Unknown Source)
            at ch.qos.logback.classic.util.ContextInitializer.autoConfig(Unknown Source)
    
    archived 
    opened by FilenkovMaxim 11
  • Logback with Encryption is not writing all the data.

    Logback with Encryption is not writing all the data.

    I have written a custom rolling file appender, where I overrode setOutputStream(), and I'm trying to encrypt the output stream, as shown below (highlighted).

    My custom rolling appender class:

    class CustomRollingFileAppender<E> constructor(context: Context) : RollingFileAppender<E>() {
       
        val logProcessor: LogProcessor
    
        init {
            logProcessor = LogProcessor(context)
        }
    
        override fun setOutputStream(outputStream: OutputStream) {
            synchronized(lock) {         
                if (outputStream is ResilientFileOutputStream) {
                    val cos: CipherOutputStream = logProcessor.encrypt(outputStream)
                    super.setOutputStream(cos)
                } else {
                    super.setOutputStream(outputStream)
                }
            }
        }
    }
    

    I have the below method which generates a key from keystore, creates a cipher, and returns a cipher output stream, which would be set in the above implementation.

        fun encrypt(outputStream: OutputStream): CipherOutputStream {
            val cipher = Cipher.getInstance("AES/CBC/PKCS7Padding")
            cipher.init(Cipher.ENCRYPT_MODE, keyFromKeystore)
    
            return CipherOutputStream(outputStream, cipher)
        }
    

    But what I observed was if I try to log like around 1000 lines of data as soon as I clicked a button as below, it is not entirely writing the data in to the files. I found this out when I decrypted the file back.

        private void createLoggerEntrys() {
            for (int i = 1; i < 1000; i++){
                logger.debug("i have entry #[{}]",i);
            }
        }
    

    However if I use 30 lines of data for example after I click a button, it is working good. I was able to encrypt and decrypt it back with all the data entered.

    I did set immediate flush to my encoder which is going to be used as flag to flush the bytes to underlying output stream.

    Can you please guide/clarify on this? Let me know if you have any questions on this.

    bug archived 
    opened by pramodrapolu 10
  • Suggestion: SQLiteAppender implement setMaxHistory

    Suggestion: SQLiteAppender implement setMaxHistory

    Hi, firstly I want to say this is really great library. Already using similar library for iOS in my open source project and I'm about to use logback-android for android logging. I'm specially interested into logging to SQLite db.

    The only thing I'm missing is setMaxHistory in days similar to RollingFileAppender, so debug logs won't get too big. Will you add this? Many thanks.

    enhancement archived 
    opened by mauron85 10
  • NPE in ThrowableProxy

    NPE in ThrowableProxy

    Description

    I get reported below exception from some users when calling org.slf4j.Logger#error(java.lang.String, java.lang.Throwable)

    Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.lang.StackTraceElement[].clone()' on a null object reference
           at ch.qos.logback.classic.spi.ThrowableProxy.()
           at ch.qos.logback.classic.spi.ThrowableProxy.()
           at ch.qos.logback.classic.spi.LoggingEvent.()
           at ch.qos.logback.classic.Logger.addAppender(Logger.java)
           at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java)
           at ch.qos.logback.classic.Logger.addAppender(Logger.java)
    

    Steps to reproduce

    I don't know how to reproduce.

    Environment

    • logback-android version: 2.0.0
    • Android version: So far 5.1 - 6.0.1
    • Platform: any
    bug cannot reproduce 
    opened by bakua 9
  • fix(deps): update dependency org.robolectric:robolectric to v4.9.2

    fix(deps): update dependency org.robolectric:robolectric to v4.9.2

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | org.robolectric:robolectric (source) | 4.9.1 -> 4.9.2 | age | adoption | passing | confidence |


    Configuration

    đź“… Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    â™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • Caused by java.lang.NullPointerException Attempt to invoke interface method 'void androidx.appcompat.view.menu.d.u(int)' on a null object reference

    Caused by java.lang.NullPointerException Attempt to invoke interface method 'void androidx.appcompat.view.menu.d.u(int)' on a null object reference

    Describe the bug

    Fatal Exception: java.lang.ExceptionInInitializerError: at ch.qos.logback.core.joran.GenericConfigurator.informContextOfURLUsedForConfiguration(GenericConfigurator.java) at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:5) at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:46) at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:7) at org.slf4j.impl.StaticLoggerBinder.(StaticLoggerBinder.java:16) at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150) at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124) at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:417) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:362) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:388) at com.inyad.store.shared.managers.MessagingManager.(MessagingManager.java:28) at com.inyad.store.shared.managers.SessionBootingManager.addDeviceId(SessionBootingManager.java:20) at com.inyad.store.shared.controllers.AppController.onCreate(AppController.java:48) at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1285) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7205) at android.app.ActivityThread.-$$Nest$mhandleBindApplication(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2288) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:240) at android.os.Looper.loop(Looper.java:351) at android.app.ActivityThread.main(ActivityThread.java:8355) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:584) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1013)

    Caused by java.lang.NullPointerException: Attempt to invoke interface method 'void androidx.appcompat.view.menu.d.u(int)' on a null object reference at ch.qos.logback.core.joran.util.ConfigurationWatchListUtil.(ConfigurationWatchListUtil.java) at ch.qos.logback.core.joran.GenericConfigurator.informContextOfURLUsedForConfiguration(GenericConfigurator.java) at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:5) at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:46) at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:7) at org.slf4j.impl.StaticLoggerBinder.(StaticLoggerBinder.java:16) at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150) at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124) at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:417) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:362) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:388) at com.inyad.store.shared.managers.MessagingManager.(MessagingManager.java:28) at com.inyad.store.shared.managers.SessionBootingManager.addDeviceId(SessionBootingManager.java:20) at com.inyad.store.shared.controllers.AppController.onCreate(AppController.java:48) at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1285) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7205) at android.app.ActivityThread.-$$Nest$mhandleBindApplication(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2288) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:240) at android.os.Looper.loop(Looper.java:351) at android.app.ActivityThread.main(ActivityThread.java:8355) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:584) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1013)

    Reproduction

    cannot reproduce it

    Logs

    No response

    logback-android version

    implementation 'com.github.tony19:logback-android:2.0.0'

    OS Version

    13

    What logback configuration are you using? (logback.xml or Java/Kotlin code)

    No response

    Validations

    • [X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
    • [X] Check that this is a concrete bug. For Q&A, please open a GitHub Discussion instead.
    • [X] The provided reproduction is a minimal reproducible of the bug.
    bug pending triage 
    opened by devzakariyainyad 0
  • fix(deps): update dependency org.mockito:mockito-core to v4

    fix(deps): update dependency org.mockito:mockito-core to v4

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | org.mockito:mockito-core | 2.28.2 -> 4.11.0 | age | adoption | passing | confidence |


    Release Notes

    mockito/mockito

    v4.11.0

    Compare Source

    Changelog generated by Shipkit Changelog Gradle Plugin

    4.11.0

    v4.10.0

    Changelog generated by Shipkit Changelog Gradle Plugin

    4.10.0

    v4.9.0

    Changelog generated by Shipkit Changelog Gradle Plugin

    4.9.0

    v4.8.1

    Changelog generated by Shipkit Changelog Gradle Plugin

    4.8.1

    v4.8.0

    Changelog generated by Shipkit Changelog Gradle Plugin

    4.8.0

    v4.7.0

    Changelog generated by Shipkit Changelog Gradle Plugin

    4.7.0

    v4.6.1

    Changelog generated by Shipkit Changelog Gradle Plugin

    4.6.1

    v4.6.0

    Changelog generated by Shipkit Changelog Gradle Plugin

    4.6.0

    v4.5.1

    Changelog generated by Shipkit Changelog Gradle Plugin

    4.5.1
    Missing net.bytebuddy.utility.GraalImageCode exception

    If you encounter any issues with missing ByteBuddy classes, make sure you are using ByteBuddy 1.12 or higher.

    v4.5.0

    Changelog generated by Shipkit Changelog Gradle Plugin

    4.5.0

    v4.4.0

    Compare Source

    Changelog generated by Shipkit Changelog Gradle Plugin

    4.4.0

    v4.3.1

    Compare Source

    Changelog generated by Shipkit Changelog Gradle Plugin

    4.3.1

    v4.3.0

    Compare Source

    Changelog generated by Shipkit Changelog Gradle Plugin

    4.3.0

    v4.2.0

    Compare Source

    Changelog generated by Shipkit Changelog Gradle Plugin

    4.2.0

    v4.1.0

    Compare Source

    Major new feature: @DoNotMock

    You can now mark classes/interfaces with @org.mockito.DoNotMock to disallow mocking with Mockito. For more information, see our documentation: https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/DoNotMock.html

    Changelog generated by Shipkit Changelog Gradle Plugin

    4.1.0

    v4.0.0

    Compare Source

    Mockito 4: Removing deprecated APIs.

    All of these APIs have been marked as deprecated and have been present in Mockito for quite a while.

    An overview of now-deleted classes/methods:

    • org.mockito.Matchers which was an alias for org.mockito.ArgumentMatchers
    • org.mockito.ArgumentMatchers#{anyObject,anyVararg} both which were aliases for org.mockito.ArgumentMatchers#any
    • org.mockito.ArgumentMatchers#any*Of, which were aliases for the same method name without the Of and the generic parameters (which were ignored)
    • org.mockito.ArgumentMatchers#{is}{Not}Null(Class) which took a class which was ignored. Aliases for the same methods without the parameter
    • org.mockito.MockedStatic#verify which had the parameter types reversed
    • org.mockito.Mockito#verifyZeroInteractions an alias of verifyNoMoreInteractions
    • org.mockito.Mockito#debug framework integration API that we later refactored
    • org.mockito.configuration.AnnotationEngine which was leaking internal APIs and instead users should use org.mockito.plugins.AnnotationEngine
    • org.mockito.exceptions.verification.TooLittleActualInvocations fixed the grammar from "Little" to "Few"
    • Numerous internal APIs that we never officially supported and can now remove
    • org.mockito.plugins.InstantiatorProvider which was leaking internal APIs and instead users should use InstantiatorProvider2 (we should probably rename back to remove the number in a future major release)
    • org.mockito.runners a package that hosted several old JUnit runners which were no longer supported. Users should instead use org.mockito.junit.MockitoJUnitRunner which is our official JUnit4 runner.

    v3.12.4

    Compare Source

    Changelog generated by Shipkit Changelog Gradle Plugin

    3.12.4
    • 2021-08-25 - 1 commit(s) by Rafael Winterhalter
    • No notable improvements. No pull requests (issues) were referenced from commits.

    v3.12.3

    Compare Source

    Changelog generated by Shipkit Changelog Gradle Plugin

    3.12.3
    • 2021-08-24 - 9 commit(s) by Rafael Winterhalter
    • Fix implementation of proxy mock maker for toString and add additional unit tests. (#​2405)
    • Avoid cache breakage (#​2402)
    • Add a limited mock maker that is based only on the java.lang.reflect.Proxy utility (#​2397)

    v3.12.2

    Compare Source

    Changelog generated by Shipkit Changelog Gradle Plugin

    3.12.2
    • 2021-08-24 - 2 commit(s) by Dmitry Vyazelenko, dependabot[bot]
    • Fixes #​2399 : Adds defaultAnswer to the MockitoMockKey to distinguish the mock types, i.e. to separate mocks from spies otherwise spy type is reused for a mock or vice versa. (#​2400)
    • Sporadic mock verification failures related to hashCode/equals on 3.12.1 (#​2399)
    • Bump versions.errorprone from 2.8.1 to 2.9.0 (#​2396)

    v3.12.1

    Compare Source

    Changelog generated by Shipkit Changelog Gradle Plugin

    3.12.1

    v3.12.0

    Compare Source

    Changelog generated by Shipkit Changelog Gradle Plugin

    3.12.0

    v3.11.2

    Compare Source

    Changelog generated by Shipkit Changelog Gradle Plugin

    3.11.2

    v3.11.1

    Compare Source

    Changelog generated by Shipkit Changelog Gradle Plugin

    3.11.1

    v3.11.0

    Compare Source

    Changelog generated by Shipkit Changelog Gradle Plugin

    3.11.0

    v3.10.0

    Compare Source

    Changelog generated by Shipkit Changelog Gradle Plugin

    3.10.0
    • 2021-05-12 - 0 commit(s) by
    • No notable improvements. No pull requests (issues) were referenced from commits.

    v3.8.0

    Compare Source

    Changelog generated by Shipkit Changelog Gradle Plugin

    3.8.0

    v3.7.7

    Compare Source

    Changelog generated by Shipkit Changelog Gradle Plugin

    3.7.7

    v3.7.0

    Compare Source

    Changelog generated by Shipkit Changelog Gradle Plugin

    3.7.0

    v3.6.28

    Compare Source

    Changelog generated by Shipkit Changelog Gradle Plugin

    3.6.28
    • 2020-11-25 - 1 commit(s) by Szczepan Faber
    • No notable improvements. No pull requests (issues) were referenced from commits.

    v3.6.0

    Compare Source

    Release notes were automatically generated by Shipkit

    3.6.0

    v3.5.15

    Release notes were automatically generated by Shipkit

    3.5.15

    v3.5.13

    Release notes were automatically generated by Shipkit

    3.5.13

    v3.5.11

    Release notes were automatically generated by Shipkit

    3.5.11

    v3.5.10

    Release notes were automatically generated by Shipkit

    3.5.10

    v3.5.9

    Release notes were automatically generated by Shipkit

    3.5.9

    v3.5.7

    Release notes were automatically generated by Shipkit

    3.5.7

    v3.5.6

    Release notes were automatically generated by Shipkit

    3.5.6

    v3.5.5

    Release notes were automatically generated by Shipkit

    3.5.5

    v3.5.2

    Release notes were automatically generated by Shipkit

    3.5.2

    v3.5.0

    Release notes were automatically generated by Shipkit

    3.5.0

    v3.4.6

    Release notes were automatically generated by Shipkit

    3.4.6

    Configuration

    đź“… Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    â™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • Dependency Dashboard

    Dependency Dashboard

    This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

    Open

    These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

    Ignored or Blocked

    These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.

    Detected dependencies

    circleci
    .circleci/config.yml
    • cimg/android 2022.12.1
    github-actions
    .github/workflows/issue-close-require.yml
    • actions-cool/issues-helper v3
    .github/workflows/issue-labeled.yml
    • actions-cool/issues-helper v3
    • actions-cool/issues-helper v3
    • actions-cool/issues-helper v3
    • actions-cool/issues-helper v3
    .github/workflows/lock-closed-issues.yml
    • dessant/lock-threads v4
    .github/workflows/semantic-pull-request.yml
    • amannn/action-semantic-pull-request v5
    gradle
    gradle.properties
    • org.slf4j:integration 1.7.36
    • org.slf4j:log4j-over-slf4j 1.7.36
    • org.slf4j:slf4j-api 1.7.36
    • org.slf4j:slf4j-ext 1.7.36
    settings.gradle
    build.gradle
    • com.android.tools.build:gradle 7.3.1
    • io.github.gradle-nexus.publish-plugin 1.1.0
    • com.github.hierynomus.license 0.16.1
    gradle/analysis.gradle
    gradle/docs.gradle
    gradle/publish-module.gradle
    gradle/publish-root.gradle
    logback-android/gradle.properties
    logback-android/build.gradle
    • junit:junit 4.13.2
    • org.hamcrest:hamcrest-junit 2.0.0.0
    • org.robolectric:robolectric 4.9.1
    • org.mockito:mockito-core 2.28.2
    • joda-time:joda-time 2.12.2
    • org.robolectric:android-all 13-robolectric-9030017
    • com.icegreen:greenmail 1.6.12
    • dom4j:dom4j 1.6.1
    • org.easytesting:fest-assert 1.4
    • org.subethamail:subethasmtp 3.1.7
    • com.sun.mail:android-mail 1.6.7
    • com.sun.mail:android-activation 1.6.7
    gradle-wrapper
    gradle/wrapper/gradle-wrapper.properties
    • gradle 7.6
    npm
    scripts/release/package.json
    • @types/minimist ^1.2.2
    • @types/node ^18.11.9
    • @types/prompts ^2.4.1
    • @types/semver ^7.3.13
    • conventional-changelog ^3.1.25
    • execa ^6.1.0
    • minimist ^1.2.7
    • picocolors ^1.0.0
    • prompts ^2.4.2
    • semver ^7.3.8
    • tsx ^3.12.1

    • [ ] Check this box to trigger a request for Renovate to run again on this repository
    opened by renovate[bot] 0
  • No log is printed with Slf4j 2.x.x

    No log is printed with Slf4j 2.x.x

    Description

    I apply the slf4j version 2.0.3 in android project. I tried to print log with debug, error level but nothing is printed. I check via logcat.

    If I rollback to version 1.7.36, it works.

    Steps to reproduce

    implementation("org.slf4j:slf4j-api:2.0.3") implementation("com.github.tony19:logback-android:2.0.0")

    Environment

    Android version : 9 Device : Huawei Nova 3i

    bug 
    opened by toantk238 6
Releases(v_2.0.1)
  • v_2.0.1(Dec 4, 2022)

    What's Changed

    • Use of EXT_DIR with Android API 29 by @roedll in https://github.com/tony19/logback-android/pull/208
    • chore: update versions in README by @tony19 in https://github.com/tony19/logback-android/pull/245
    • Cascade delete logging_event_exception and logging_event_property by @erikhubers in https://github.com/tony19/logback-android/pull/214
    • Configure Renovate by @renovate in https://github.com/tony19/logback-android/pull/251
    • chore: tweak issue template and other workflows by @tony19 in https://github.com/tony19/logback-android/pull/278
    • chore: disallow blank issues; add external links by @tony19 in https://github.com/tony19/logback-android/pull/279
    • fix: allow RollingFileAppender to always run by @tony19 in https://github.com/tony19/logback-android/pull/280
    • feat: enable hostnameVerification flag in SSL sockets by @tony19 in https://github.com/tony19/logback-android/pull/281
    • docs: update usage instructions in logback.xsd by @tony19 in https://github.com/tony19/logback-android/pull/282
    • chore: update readme by @tony19 in https://github.com/tony19/logback-android/pull/283
    • chore: link to pr for slf4j 2.x; add unit test config by @tony19 in https://github.com/tony19/logback-android/pull/284
    • Dont set GMT+0 timezone in RollingCalendar if no timezone is given (fixes #213) by @veN1337 in https://github.com/tony19/logback-android/pull/221
    • fix(deps): update dependency org.robolectric:android-all to v13 by @renovate in https://github.com/tony19/logback-android/pull/276
    • chore: replace version text with badge in readme by @tony19 in https://github.com/tony19/logback-android/pull/285
    • fix(deps): update dependency org.robolectric:robolectric to v4.9 by @renovate in https://github.com/tony19/logback-android/pull/269
    • fix(deps): update dependency org.mockito:mockito-core to v2.28.2 by @renovate in https://github.com/tony19/logback-android/pull/268
    • fix(deps): update dependency junit:junit to v4.13.2 by @renovate in https://github.com/tony19/logback-android/pull/266
    • fix(deps): update slf4jversion to v1.7.36 by @renovate in https://github.com/tony19/logback-android/pull/286
    • fix(deps): update dependency joda-time:joda-time to v2.12.1 by @renovate in https://github.com/tony19/logback-android/pull/265
    • fix(deps): update dependency com.icegreen:greenmail to v1.6.11 by @renovate in https://github.com/tony19/logback-android/pull/262
    • fix(deps): update dependency com.sun.mail:android-mail to v1.6.7 by @renovate in https://github.com/tony19/logback-android/pull/255
    • fix(deps): update dependency com.sun.mail:android-activation to v1.6.7 by @renovate in https://github.com/tony19/logback-android/pull/253
    • chore(deps): update plugin net.researchgate.release to v2.8.1 by @renovate in https://github.com/tony19/logback-android/pull/260
    • chore(deps): update plugin io.codearte.nexus-staging to v0.30.0 by @renovate in https://github.com/tony19/logback-android/pull/259
    • chore(deps): update dependency gradle to v4.10.3 by @renovate in https://github.com/tony19/logback-android/pull/252
    • fix(deps): update gradle to v7 by @tony19 in https://github.com/tony19/logback-android/pull/287
    • ci(circle): use new android image by @tony19 in https://github.com/tony19/logback-android/pull/288
    • chore: make it more obvious that slf4j 2.x not yet supported by @tony19 in https://github.com/tony19/logback-android/pull/289
    • chore: show logback.xsd in example config by @tony19 in https://github.com/tony19/logback-android/pull/290
    • chore(deps): update plugin com.github.hierynomus.license to v0.16.1 by @renovate in https://github.com/tony19/logback-android/pull/258
    • build: gradle deploy refresh by @tony19 in https://github.com/tony19/logback-android/pull/291
    • chore(deps): update dependency gradle to v7.6 by @renovate in https://github.com/tony19/logback-android/pull/292
    • fix(deps): update dependency joda-time:joda-time to v2.12.2 by @renovate in https://github.com/tony19/logback-android/pull/293
    • chore(deps): update dessant/lock-threads action to v4 by @renovate in https://github.com/tony19/logback-android/pull/294

    New Contributors

    • @roedll made their first contribution in https://github.com/tony19/logback-android/pull/208
    • @tony19 made their first contribution in https://github.com/tony19/logback-android/pull/245
    • @erikhubers made their first contribution in https://github.com/tony19/logback-android/pull/214
    • @renovate made their first contribution in https://github.com/tony19/logback-android/pull/251
    • @veN1337 made their first contribution in https://github.com/tony19/logback-android/pull/221

    Full Changelog: https://github.com/tony19/logback-android/compare/v_2.0.0...v_2.0.1

    Source code(tar.gz)
    Source code(zip)
  • v_2.0.0(Feb 27, 2019)

  • v_1.3.0-3(Dec 6, 2018)

  • v_1.3.0-2(Sep 17, 2018)

  • v_1.3.0-1(Sep 17, 2018)

    • [FIX] Fix scanPeriod attribute required for auto-reload to work (LOGBACK-1194)
    • [FIX] Fix SSL for SMTPAppender (LOGBACK-1094)
    • [FIX] Fix artificial limit for number of files allowed in RollingFileAppender (LOGBACK-1175)
    • [FIX] Fix NPE when using MDCFilter (LOGBACK-1165)
    • [FIX] Fix missing log files/entries when using SizeAndTimeBasedRollingPolicy (LOGBACK-1361)
    • [FIX] Fix unexpected DEBUG logs for misspelled log levels (LOGBACK-1288)
    • [FIX] Fix invalid JSON property values for custom appenders (LOGBACK-1101)
    • [NEW] Enable default shutdown hook (LOGBACK-1162)
    • [NEW] Support min length in %i filename pattern (LOGBACK-1248)
    • [NEW] Allow editing MIME message before sending email with SMTPAppender
    Source code(tar.gz)
    Source code(zip)
    logback-android-1.3.0-1.aar(398.55 KB)
  • v_1.2.3-1(Sep 17, 2018)

  • v_1.2.2-1(Sep 17, 2018)

  • v_1.2.1-1(Sep 17, 2018)

  • v_1.2.0-1(Sep 17, 2018)

  • v_1.1.9-1(Sep 17, 2018)

  • v_1.1.8-1(Sep 17, 2018)

  • v_1.1.7-1(Sep 17, 2018)

  • v_1.1.6-1(Sep 17, 2018)

  • v_1.1.5-1(Sep 17, 2018)

  • v_1.1.4-1(Sep 17, 2018)

  • v_1.1.3-1(Sep 17, 2018)

    • [FIX] Fix day of the week in date patterns (LOGBACK-969)
    • [FIX] Suppress errors for optional <include>
    • [FIX] Fix crash when creating log directory in multithreaded environment (#168)
    • [FIX] Fix corrupted emails from SMTPAppender in multithreaded environment (LOGBACK-909)
    • [FIX] Escape characters in XMLLayout and HTMLLayout (LOGBACK-728, LOGBACK-440)
    • [FIX] Fix unexpected rollover that occurred in local time instead of specified time zone
    • [NEW] Make charset configurable in SyslogAppender (LOGBACK-732)
    • [NEW] Add XML support to en/disable stacktrace package detail
    • [NEW] Filtering out selected stack trace frames (LOGBACK-540)
    • [NEW] Add support for depth range to CallerDataConverter
    • [NEW] Allow specifying time zone in TimeBasedRollingPolicy's fileNamePattern (LOGBACK-611)
    Source code(tar.gz)
    Source code(zip)
    logback-android-1.1.3-1.aar(383.79 KB)
  • v_1.1.11-1(Sep 17, 2018)

  • v_1.1.10-1(Sep 17, 2018)

  • v_1.1.2-1(Sep 17, 2018)

  • v_1.1.1-13(Sep 5, 2018)

  • v_1.1.1-12(May 19, 2018)

  • v_1.1.1-11(Apr 11, 2018)

  • v_1.1.1-10(Mar 27, 2018)

    • [BREAKING CHANGE] Remove support for parsing logback configs from AndroidManifest.xml. (Move those configurations into separate files (e.g., into app/src/main/assets/logback.xml), or configure the logs programmatically instead.) Also note this requires that statically initialized loggers be moved into the app's onCreate() callback to ensure the application context could be read for special properties.
    • Fix license config in deployments
    Source code(tar.gz)
    Source code(zip)
    logback-android-1.1.1-10.aar(376.31 KB)
  • v_1.1.1-9(Mar 5, 2018)

    • [FIX] Fix error when building app release with logback-android (#163)

    • [DEPRECATED] Support for logback configurations in AndroidManifest.xml will be removed in the next release. (Move those configurations into separate files (e.g., into app/src/main/assets/logback.xml), or configure the logs programmatically instead.)

    • [DEPRECATED] EPL/LGPL license. (We're switching to the more permissive Apache 2 license in an upcoming release.)

    Source code(tar.gz)
    Source code(zip)
    logback-android-1.1.1-9.aar(380.27 KB)
  • v_1.1.1-8(Feb 6, 2018)

  • v_1.1.1-7(Feb 6, 2018)

    • [FIX] Fix missing interrupted flag in AsyncAppenderBase (#147)
    • [FIX] Remove transitive Android dependency, which was causing pre-dex errors and linter warnings in app builds
    • [NEW] Switched released package names from com.github.tony19:logback-android-classic and com.github.tony19:logback-android-core to com.github.tony19:logback-android. A single artifact will be released going forward.
    • Default to US locale in string conversions
    Source code(tar.gz)
    Source code(zip)
    logback-android-1.1.1-7.aar(380.10 KB)
  • v_1.1.1-6(Aug 15, 2016)

  • v_1.1.1-5(Apr 8, 2016)

  • v_1.1.1-4(Jun 23, 2015)

  • v_1.1.1-3(Oct 1, 2014)

Lightning fast, open-source, < 200kb Android launcher

Lightning fast, open-source, < 200kb Android launcher

Matthieu Bacconnier 2.4k Jan 9, 2023
A simple and scalable Android bot emulation framework, as presented at Black Hat Europe's Arsenal

m3 A simple and scalable Android bot emulation framework. A detailed explanation can be found here. This project was first published at Black Hat Euro

null 22 Aug 20, 2022
Android framework for node.js applications

Introduction Anode is an embryonic framework for running node.js applications on Android. There are two main parts to this: a port of node.js to the A

Paddy Byers 586 Dec 9, 2022
A Java client for the Sixpack A/B testing framework https://github.com/seatgeek/sixpack

sixpack-java A Java client for SeatGeek's Sixpack a/b testing framework: https://github.com/seatgeek/sixpack Installing Sixpack-java is currently only

null 135 Oct 7, 2022
A RS3 RSPS framework targeted at NXT, the goal is to stay up-to-date with RS3

OpenNXT - RS3 919 A RS3 RSPS framework targeted at NXT, the goal is to stay up-to-date with RS3 Discord We have a Discord server you can join! https:/

Daniël Voort 23 Oct 13, 2022
JVM Bytecode Transformation Framework

unboks - JVM Bytecode Transformation Framework ⚠️ Read the State of the Project section before considering use! ⚠️ This framework exposes a graph-base

Anders Høst 1 May 25, 2022
****. Use the native and support library variants instead - https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html. An android library that makes it easy to add custom fonts to edittexts and textviews

Add to your project Add this line to your dependencies in build.gradle compile 'in.workarounds.typography:typography:0.0.8' Using the views There are

Workarounds 43 Nov 6, 2021
SL4A brings scripting languages to Android by allowing you to edit and execute scripts and interactive interpreters directly on the Android device.

#Scripting Layer for Android (SL4A) SL4A brings scripting languages to Android by allowing you to edit and execute scripts and interactive interpreter

Damon Kohler 2.3k Dec 23, 2022
An application for runners and cyclists. Allows you to monitor your physical activity, weight and receive reminders about workouts.

An application for runners and cyclists. Allows you to monitor your physical activity, weight and receive reminders about workouts.

Just_Amalll 3 Feb 7, 2022
A curated list of standards, tests and benchmarks that can be used for testing and evaluating dev-tools

A curated list of standards, tests and benchmarks that can be used for testing and evaluating dev tools Contribution Add the description of the benchm

null 13 Dec 16, 2022
A gradle plugin for getting java lambda support in java 6, 7 and android

Gradle Retrolambda Plugin This plugin will automatically build your java or android project with retrolambda, giving you lambda goodness on java 6 or

Evan Tatarka 5.3k Jan 5, 2023
A Job Queue specifically written for Android to easily schedule jobs (tasks) that run in the background, improving UX and application stability.

Development in this repository is stopped. Future development continues on https://github.com/yigit/android-priority-jobqueue ========================

Path Mobile Inc Pte. Ltd. 2.4k Dec 9, 2022
An android library for displaying fps from the choreographer and percentage of time with two or more frames dropped

DEPRECATED TinyDancer is deprecated. No more development will be taking place. Check out the Google Android developer documentation for UI performance

Friendly Robot 1.9k Jan 3, 2023
It makes a preview from an url, grabbing all the information such as title, relevant texts and images. This a version for Android of my web link preview https://github.com/LeonardoCardoso/Link-Preview

LeoCardz Link Preview for Android It makes a preview from an url, grabbing all the information such as title, relevant texts and images. Visual Exampl

Leonardo Cardoso 420 Nov 19, 2022
A plug and play ;) android library for displaying a "rate this app" dialog

Easy Rating Dialog This lib provides a simple way to display an alert dialog for rating app. Default conditions to show: User opened the app more than

Fernando MartĂ­nez 111 Dec 30, 2022
AudioPlayerView is an Android view that loads audio from an url and have basic playback tools.

AudioPlayerView AudioPlayerView is an Android view that loads audio from an url and have basic playback tools. It makes use of the Android MediaPlayer

Hugo Matilla 86 Nov 29, 2022
transai is a localization tool on Android and iOS.

transai transai is a command line tool to help you do Android and iOS translation management. You can extract string files to csv format, or generate

Jintin 56 Nov 12, 2022
Common rules and macros for Grab's Android projects built with Bazel.

Common rules and macros for Grab's Android projects built with Bazel. This repo provides rules and macros to support some of Android Gradle Plugin features in Bazel.

Grab 26 Dec 14, 2022
Purpose for this base architectural project is to load it with all latest components and libraries So it become reference for all kind of Android projects

The purpose of this base architectural project is to load it with all the latest components and libraries, So it becomes a reference for all kinds of Android projects

null 7 Dec 7, 2021