tinylog is a lightweight logging framework for Java, Kotlin, Scala, and Android

Overview

tinylog 2

Build Code Coverage Maven Central Percentage of issues still open Average time to resolve an issue

Example

import org.tinylog.Logger;
    
public class Application {

    public static void main(String[] args) {
        Logger.info("Hello {}!", "world");
    }

}

Outputting log entries to the console and rolling log files via tinylog.properties

level            = INFO

writer1          = console
writer1.format   = {date: HH:mm:ss.SSS} {class}.{method}() {level}: {message}

writer2          = rolling file
writer2.file     = logs/{date: yyyy-MM-dd}/log_{count}.txt
writer2.policies = startup, daily: 03:00
writer2.format   = {date: HH:mm:ss} [{thread}] {level}: {message}

More information about tinylog including a detailed user manual and the Javadoc documentation can be found on https://tinylog.org/v2/.

Contributing

On GitHub, issues and pull requests are always welcome :)

For building tinylog or contributing to this project, please take a look at contributing.md.

License

Copyright 2016-2021 Martin Winandy

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
  • No logging framework implementation when enabling proguard on Android

    No logging framework implementation when enabling proguard on Android

    Hi, I'm using tinylog version 2.0.0 on Android and it worked great. However I recently released my new app and I found out that the log file never gets created. So I started to investigate the issue. What I found out is that as soon as I enable proguard on my release build I receive following output on the logcat when I log something

    LOGGER WARN: No logging framework implementation found in classpath. Add tinylog-impl.jar for outputting log entries.

    My tinylog.properties file looks like this

    writer=rolling file
    writer.file=/data/data/test.grill.com/files/test_logs/test_log.txt
    writer.level=info
    writer.policies=size: 5mb
    writer.format={date: HH:mm:ss.SSS} [{thread}] {level}:\n{message}
    

    and it is located in my resources folder. Everything is working when I'm not enabling proguard. Are there some proguard rules which needs to be added when using tinylog with proguard?

    Edit: seems that the ServiceLoader could not get anyResourses

    classLoader.getResources(name);

    returns an empty Enumeration when enabling proguard.

    bug 
    opened by grill2010 21
  • Test failures in SharedFileWriterTest on Linux systems

    Test failures in SharedFileWriterTest on Linux systems

    Running SharedFileWriterTest on Linux I get test failures as described here: https://github.com/jotomo/tinylog/commit/0b41014894d5986d163e266411d993abaa1ca9ee, indicating a problem when writing to a log file concurrently. @pmwmedia I'm assuming you're running Windows. TravisCI would run the tests on Linux - I've seen you tested TravisCI but dropped it again. Remember why?

    Updated: running a Linux system natively, or a Linux VM on a Linux hosts, there are intermittend build failures in tests that inherit from AbstractTimeBasedPolicy (mostly in WeeklyPolicyTest). These failures occur 1-3 times out of 10 on an Arch Linux system (as December 2015). It seems that the SystemTimeMock is not thread-safe and occassionally returns the actual system time, leading to test failures.

    bug 
    opened by jotomo 21
  • Feature/#194 add json writer

    Feature/#194 add json writer

    Description

    Linked issue: #194

    Definition of Done

    • [x] There are no TODOs left in the code
    • [x] Code style follows the tinylog standard
    • [x] All classes and methods have Javadoc
    • [x] Changes are covered by JUnit tests including corner cases, errors, and exception handling
    • [x] Maven build works including compiling, tests, and checks (mvn verify)
    • [x] Changes are committed by a verified email address that is assigned to the GitHub account (https://github.com/settings/emails)

    Documentation

    Additions or amendments for the public documentation:

    Writer | Property Value | Description :------------------------------------------ |:-------------- |:------------ ... JSON Writer | json | Writes log entries to a json file

    ...

    JSON Writer

    The JSON writer writes log entries to a defined json file. It supports custom field configuration with the syntax writer.field.FIELDNAME = FORMAT. With appending mode off, the file is reset with new log entries. The format can be configured like in other writers. Example:

    writer         = json
    writer.file    = log.json
    writer.charset = UTF-8 
    writer.append  = true
    writer.field.message = message
    writer.field.date = date
    writer.field.lvl = level
    

    Agreements

    • [x] I agree that my changes will be published under the terms of the Apache License 2.0
    • [x] I agree that my GitHub user name will be published in the release notes
    opened by proohit 20
  • No logging framework implementation found in classpath. Add tinylog-impl.jar for outputting log entries.

    No logging framework implementation found in classpath. Add tinylog-impl.jar for outputting log entries.

    I don't know why this exception throw when i adds via gradle collect dependencies and in bundle i have all impl module classes.

    image

    image

    image

    I also noticed that many have the same problem.

    Gradle dependencies:

    image

    Embed configuration:

    image

    Jar configuration:

    image

    question 
    opened by MairwunNx 20
  • TinyLog module-info.java

    TinyLog module-info.java

    Hello, have you thinking about providing module-info.java module descriptor then TinyLog to be compatible with Java Platform Module System and make possible creating of runtime image with jlink ?

    enhancement 
    opened by moxit0 17
  • JSON Writer leave json file in correct state

    JSON Writer leave json file in correct state

    Describe the issue Currently, the writer leaves the ] out and keeps the last , which is invalid json. I think we should let the json log file always stay in a syntactic correct state. One would not be able to parse the file while it does not match JSON spec.

    Currently the close method performs the last steps needed to bring it in that state by calling postProcess. Maybe we could handle the logic of postProcess everytime we write an entry. The new close method should then only handle writer.flush() and writer.close()

    The file currently looks like this:

    [
    	{
               ...
    	},
    

    To Reproduce

    1. configure properties to use json writer
    2. start application
    3. write any entry
    4. use the json for anything other while application is running

    Environment tinylog version: 2.4 Java version: 15

    enhancement 
    opened by proohit 16
  • Configuration property loader as service to allow YAML loader

    Configuration property loader as service to allow YAML loader

    Description

    The Java property configuration loader is made more generic and as service so that user loaders (YAML, JSON) become possible. Besides the ConfigurationLoader interface and its implementation this requires public access to some classes and methods.

    Linked issue: #114

    Definition of Done

    • [x] There are no TODOs left in the code
    • [x] Code style follows the tinylog standard
    • [x] All classes and methods have Javadoc
    • [x] Changes are covered by JUnit tests including corner cases, errors, and exception handling
    • [x] Maven build works including compiling, tests, and checks (mvn verify)
    • [x] Changes are committed by a verified email address that is assigned to the GitHub account (https://github.com/settings/emails)

    Documentation

    Additions or amendments for the public documentation:

    It has API effect with the new configuration loader service.
    

    Agreements

    • [x] I agree that my changes will be published under the terms of the Apache License 2.0
    • [x] I agree that my GitHub user name will be published in the release notes
    opened by Git5000 14
  • Slf4j does not log correct class

    Slf4j does not log correct class

    Describe the bug When using slf4j-tinylog the correct class is not logged

    To Reproduce Steps to reproduce the behavior:

    1. Use tinylog, tinylog-api and slf4j-tinylog
    2. Run an application that uses slf4j e.g. Flyway
    3. It runs and logs incorrectly, e.g.

    2021-01-01 15:33:23 [io-executor-thread-1] org.flywaydb.core.internal.logging.slf4j.Slf4jLog.info() INFO: Flyway Community Edition 7.3.1 by Redgate 2021-01-01 15:33:23 [io-executor-thread-1] org.flywaydb.core.internal.logging.slf4j.Slf4jLog.info() INFO: Database: jdbc:postgresql://127.0.0.1:6432/test (PostgreSQL 13.1) 2021-01-01 15:33:23 [io-executor-thread-1] org.flywaydb.core.internal.logging.slf4j.Slf4jLog.info() INFO: Current version of schema "public": 1.1

    Where these entries belong to different classes, e.g. the first is run from a class called VersionPrinter.

    Environment tinylog version: 2.2.1 Java version: 15

    invalid 
    opened by re-thc 13
  • Fix for MiniBug: NullPointerException in ThreadNameToken #159

    Fix for MiniBug: NullPointerException in ThreadNameToken #159

    Description

    Linked issue: #159

    Definition of Done

    • [x] There are no TODOs left in the code
    • [x] Code style follows the tinylog standard
    • [x] All classes and methods have Javadoc
    • [x] Changes are covered by JUnit tests including corner cases, errors, and exception handling
    • [x] Maven build works including compiling, tests, and checks (mvn verify)
    • [x] Changes are committed by a verified email address that is assigned to the GitHub account (https://github.com/settings/emails)

    Documentation

    Additions or amendments for the public documentation:

    
    

    Agreements

    • [x] I agree that my changes will be published under the terms of the Apache License 2.0
    • [x] I agree that my GitHub user name will be published in the release notes
    opened by Git5000 13
  • Add linktolatest option for RollingFileWriter

    Add linktolatest option for RollingFileWriter

    see https://github.com/pmwmedia/tinylog/issues/149

    I'm not sure how to implement the assertions in the test. The build is not working on my machine (javac 11.0.7)

    tinylog/tinylog-api/src/main/java/org/tinylog/runtime/LegacyJavaRuntime.java:[58,43] cannot find symbol
    [ERROR]   symbol:   class Reflection
    [ERROR]   location: package sun.reflect
    

    If you find the idea acceptable, could you please help me with this part? Thank you!

    opened by pabl0rg 13
  • Add support for logging with multiple tags

    Add support for logging with multiple tags

    Description

    Linked issue: #201

    This change allows a single TaggedLogger to log to multiple tags, instead of having to create individual logger for each tag.

    Definition of Done

    • [x] I read contributing.md
    • [x] There are no TODOs left in the code
    • [x] Code style follows the tinylog standard
    • [x] All classes and methods have Javadoc
    • [x] Changes are covered by JUnit tests including edge cases, errors, and exception handling
    • [x] Maven build works including compiling, tests, and checks (mvn verify)
    • [x] Changes are committed by a verified email address that is assigned to the GitHub account (https://github.com/settings/emails)

    Documentation

    Additions or amendments for the public documentation:

    • Tags will need to be updated with the addition of the new tags method.

    Agreements

    • [x] I agree that my changes will be published under the terms of the Apache License 2.0 (mandatory)
    • [x] I agree that my GitHub user name will be published in the release notes (optional)
    opened by kahgoh 12
  • Update mockito monorepo to v4.11.0

    Update mockito monorepo to v4.11.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | org.mockito:mockito-junit-jupiter | 4.10.0 -> 4.11.0 | age | adoption | passing | confidence | | org.mockito:mockito-inline | 4.10.0 -> 4.11.0 | age | adoption | passing | confidence | | org.mockito:mockito-android | 4.10.0 -> 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
    • 2022-12-28 - 1 commit(s) by Andy Coates
    • Improve vararg handling: approach 2 (#​2807)
    • Mocking varargs method with any(String[].class) doesn't work as expected (#​2796)
    • (Argument)Matchers regression from 1.10.19 to 2.18.3 for varargs (#​1498)
    • Cannot verify varargs parameter as an array (#​1222)
    • ArgumentCaptor can't capture varargs-arrays (#​584)
    • Verification of an empty varargs call fails when isNotNull() is used (#​567)

    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

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

    🔕 Ignore: Close this PR and you won't be reminded about these updates 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] 1
  • Error log is slower than others

    Error log is slower than others

    Describe the bug When logging an error at the end of a while loop and logging info at the beginning the info message get's displayed first if the loop continues

    2022-12-28 14:06:14 [main] -> DEBUG: Input['asfd'] was issued
    2022-12-28 14:06:14 [main] -> INFO: Select a version [PROXY, GAME_SERVER]
    af
    2022-12-28 14:06:15 [main] -> DEBUG: Input['af'] was issued
    2022-12-28 14:06:15 [main] -> INFO: Select a version [PROXY, GAME_SERVER]
    2022-12-28 14:06:15 [main] -> ERROR: Couldn't verify input
    adf
    2022-12-28 14:06:15 [main] -> DEBUG: Input['adf'] was issued
    2022-12-28 14:06:15 [main] -> INFO: Select a version [PROXY, GAME_SERVER]
    2022-12-28 14:06:15 [main] -> ERROR: Couldn't verify input
    

    To Reproduce Steps to reproduce the behavior:

    import kotlinx.coroutines.Dispatchers
    import kotlinx.coroutines.withContext
    import org.tinylog.kotlin.Logger
    import kotlin.reflect.KClass
    import kotlin.reflect.cast
    
    class Question<T: Any>(private val text: String, private val type: KClass<T>, private val answers: List<T> = emptyList()) {
    
        init {
            if (!(type == String::class || type == Boolean::class || type == Char::class ||
                        type == Short::class || type == Int::class || type == Long::class ||
                        type == Float::class || type == Double::class || type.isEnum)) {
                throw UnsupportedOperationException("Question only supports primitives, but was $type")
            }
        }
    
        @Suppress("MemberVisibilityCanBePrivate")
        lateinit var answer: T
            private set
    
        suspend fun askConsole(): Question<T> {
            do {
                Logger.info(text + if (answers.isNotEmpty()) answers.joinToString(prefix = " [", postfix = "]", separator = ", ") else "")
                val input = withContext(Dispatchers.IO) {
                    readln()
                }
                Logger.debug("Input['$input'] was issued")
                try {
                    val cast = type.cast(when (type) {
                        String::class -> input
                        Boolean::class -> input.toBooleanStrict()
                        Char::class -> {
                            val charArray = input.toCharArray()
                            if (charArray.size > 1) {
                                throw IllegalArgumentException()
                            }
                            charArray.first()
                        }
    
                        Short::class -> input.toShort()
                        Int::class -> input.toInt()
                        Long::class -> input.toLong()
                        Float::class -> input.toFloat()
                        Double::class -> input.toDouble()
                        else -> {
                            if (!type.isEnum) {
                                throw UnsupportedOperationException()
                            }
    
                            type.enumConstants.find {
                                (it as Enum<*>).name.equals(input, ignoreCase = true)
                            } ?: throw IllegalArgumentException()
                        }
                    })
    
                    if (answers.isNotEmpty() && !answers.contains(cast)) {
                        Logger.error("Wrong answer")
                    } else {
                        answer = cast
                    }
                } catch (e: Exception) {
                    Logger.error("Couldn't verify input")
                }
            } while (!::answer.isInitialized)
    
            return this
        }
    }
    

    Environment tinylog version: 2.5.0 Kotlin version: 1.7.21

    bug 
    opened by NitrinCloud 1
  • Open file descriptors when using multiple tagged loggers with a collective configuration

    Open file descriptors when using multiple tagged loggers with a collective configuration

    Hi everyone,

    let's say we have 20 different java applications/services running in an application server (Tomcat, etc.). Each application has it's own valid log configuration, stored in a collective, single tinylog configuration file, which is used for the logging configuration of all applications, e.g.

    tinylog.properties

    writerSERVICE1 = rolling file
    writerSERVICE1.tag = SERVICE1
    writerSERVICE1.format = {date:yyyy-MM-dd HH:mm:ss.SSSZ} | {class-name} | {message}
    writerSERVICE1.level = info
    writerSERVICE1.file = /some/logpath/service1.{date:yyyyMMdd}.{count}.log
    writerSERVICE1.policies = daily, size: 10mb
    writerSERVICE1.backups = 5
    
    writerSERVICE2 = rolling file
    writerSERVICE2.tag = SERVICE2
    writerSERVICE2.format = {date:yyyy-MM-dd HH:mm:ss.SSSZ} | {class-name} | {message}
    writerSERVICE2.level = info
    writerSERVICE2.file = /some/logpath/service2.{date:yyyyMMdd}.{count}.log
    writerSERVICE2.policies = daily, size: 10mb
    writerSERVICE2.backups = 5
    [...]
    writerSERVICE20 = rolling file
    writerSERVICE20.tag = SERVICE20
    writerSERVICE20.format = {date:yyyy-MM-dd HH:mm:ss.SSSZ} | {class-name} | {message}
    writerSERVICE20.level = info
    writerSERVICE20.file = /some/logpath/service20.{date:yyyyMMdd}.{count}.log
    writerSERVICE20.policies = daily, size: 10mb
    writerSERVICE20.backups = 5
    

    Applications are mainly using their own Tag for logging, for example SERVICE1 uses the following code to log messages to its designated logfile: Service1Impl.java

    public static final TaggedLogger SERVICE1_LOGGER = Logger.tag("SERVICE1");
    
    //[...]
    SERVICE1_LOGGER1.info("Some Info");
    SERVICE1_LOGGER1.error("Some error");
    

    Applications are running fine with this configuration in the application server and whenever each Service is called, each logging message is stored in its own logfile, as intended.

    Open file descriptors: However when inspecting the open file descriptors under a Linux System, f.e. with the command lsof -a -p APPLICATION_SERVER_PID | grep service1 | grep .log what you see is up to 20 different open file descriptors for the same logfile.

    It looks like file descriptors are opened by each service (20) for each tag (20), regardless if the tag is used or not. So if each service already logged an initial message with the configuration above (in tinylog.properties), we can see up to 400 (20x20) open file descriptors, eventhough each service really only used its own Logging Tag for logging purposes.

    There might be a possibility this introduces problems (Exceptions - Too many open files), because of a default maximum open files per process limit under linux. One can inspect that limit with the linux command:

    ulimit -a
    [...]
    open files                      (-n) 1024
    

    Is there a way, so that the file descriptors are opened only when they are really used ? My first idea would be to either

    1. raise the maximum open file per process limit (this requires a manual operation from the system administrator)
    2. to split up the configuration file (tinylog.properties), so each service has its own configuration file, only with that logging tag configuration. (The latter might solve the file descriptor problem but introduces new problems ...)

    In my opinion, a single configuration file seems much easier to handle than 20 different files. Also since tinylog 2.4 #201 it's possible to create a tagged logger with multiple tags that issues each log entry to all defined tags. So with multiple configuration files, you would have to configure a tag used by multiple services again and again, in multiple different files, ugh...

    Do you have any other ideas ? Is there a way, so that file descriptors are only created f.e. the first time they are used ?

    Thanks in Advance !!

    question 
    opened by MartinAnon 3
  • Dependency Dashboard

    Dependency Dashboard

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

    Pending Branch Automerge

    These updates await pending status checks before automerging. Click on a checkbox to abort the branch automerge, and create a PR instead.

    • [ ] Update dependency com.puppycrawl.tools:checkstyle to v10.6.0

    Open

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

    Detected dependencies

    github-actions
    .github/workflows/build.yaml
    • actions/checkout v3
    • actions/cache v3
    • actions/setup-java v3
    • codecov/codecov-action v3
    • actions/checkout v3
    • actions/cache v3
    • actions/cache v3
    • actions/cache v3
    • actions/setup-java v3
    • reactivecircus/android-emulator-runner v2
    • reactivecircus/android-emulator-runner v2
    • codecov/codecov-action v3
    gradle
    tinylog-android-tests/gradle.properties
    tinylog-android-tests/settings.gradle
    tinylog-android-tests/build.gradle
    • com.android.tools.build:gradle 7.3.1
    • de.mannodermaus.gradle.plugins:android-junit5 1.8.2.1
    • org.jacoco:org.jacoco.core 0.8.8
    • androidx.constraintlayout:constraintlayout 2.1.4
    • androidx.test:runner 1.5.1
    • com.github.stefanbirkner:system-lambda 1.2.1
    • com.google.guava:guava 31.1-jre
    • com.h2database:h2 2.1.214
    • de.mannodermaus.junit5:android-test-core 1.3.0
    • javax.inject:javax.inject 1
    • org.assertj:assertj-core 3.23.1
    • org.assertj:assertj-db 2.0.2
    • org.junit.jupiter:junit-jupiter-api 5.9.1
    • org.junit.jupiter:junit-jupiter-params 5.9.1
    • org.mockito:mockito-android 4.10.0
    • org.mockito:mockito-junit-jupiter 4.10.0
    • de.mannodermaus.junit5:android-test-runner 1.3.0
    tinylog-android-tests/tinylog-core-tests/build.gradle
    tinylog-android-tests/tinylog-impl-tests/build.gradle
    gradle-wrapper
    tinylog-android-tests/gradle/wrapper/gradle-wrapper.properties
    • gradle 7.6
    maven
    benchmarks/benchmark-caller/pom.xml
    benchmarks/benchmark-charset-encoding/pom.xml
    benchmarks/benchmark-file-output/pom.xml
    benchmarks/benchmark-logging/benchmark-core/pom.xml
    benchmarks/benchmark-logging/benchmark-jul/pom.xml
    benchmarks/benchmark-logging/benchmark-log4j2/pom.xml
    • com.lmax:disruptor 3.4.4
    • org.apache.logging.log4j:log4j-core 2.19.0
    benchmarks/benchmark-logging/benchmark-logback/pom.xml
    • ch.qos.logback:logback-classic 1.4.5
    • org.slf4j:slf4j-api 2.0.6
    benchmarks/benchmark-logging/benchmark-noop/pom.xml
    benchmarks/benchmark-logging/benchmark-tinylog2/pom.xml
    • org.tinylog:tinylog-api 2.6.0-M2
    • org.tinylog:tinylog-impl 2.6.0-M2
    benchmarks/benchmark-logging/benchmark-tinylog3/pom.xml
    benchmarks/benchmark-logging/pom.xml
    • org.apache.maven.plugins:maven-surefire-plugin 3.0.0-M7
    benchmarks/benchmark-logging/website-csv/pom.xml
    benchmarks/pom.xml
    • org.openjdk.jmh:jmh-generator-annprocess 1.36
    pom.xml
    • com.google.android:android 4.1.1.4
    • org.assertj:assertj-core 3.23.1
    • org.assertj:assertj-db 2.0.2
    • io.github.kayr:fuzzy-csv 1.8.1-groovy4
    • com.google.guava:guava 31.1-jre
    • com.h2database:h2 2.1.214
    • javax.inject:javax.inject 1
    • org.openjdk.jmh:jmh-core 1.36
    • org.junit.jupiter:junit-jupiter-api 5.9.1
    • org.junit.jupiter:junit-jupiter-engine 5.9.1
    • org.junit.jupiter:junit-jupiter-params 5.9.1
    • org.jetbrains.kotlin:kotlin-stdlib-jdk8 1.8.0
    • org.mockito:mockito-inline 4.10.0
    • org.mockito.kotlin:mockito-kotlin 4.1.0
    • org.mockito:mockito-junit-jupiter 4.10.0
    • com.github.h-thurow:simple-jndi 0.23.0
    • org.slf4j:slf4j-api 2.0.6
    • org.slf4j:slf4j-nop 2.0.6
    • com.github.stefanbirkner:system-lambda 1.2.1
    • com.google.android:android 4.1.1.4
    • org.jetbrains.dokka:dokka-maven-plugin 1.7.20
    • org.codehaus.mojo:exec-maven-plugin 3.1.0
    • org.jacoco:jacoco-maven-plugin 0.8.8
    • org.jetbrains.kotlin:kotlin-maven-plugin 1.8.0
    • com.github.gantsign.maven:ktlint-maven-plugin 1.15.2
    • org.apache.maven.plugins:maven-assembly-plugin 3.4.2
    • org.apache.felix:maven-bundle-plugin 5.1.8
    • org.apache.maven.plugins:maven-checkstyle-plugin 3.2.0
    • com.puppycrawl.tools:checkstyle 10.5.0
    • org.apache.maven.plugins:maven-clean-plugin 3.2.0
    • org.apache.maven.plugins:maven-compiler-plugin 3.10.1
    • org.apache.maven.plugins:maven-deploy-plugin 3.0.0
    • org.apache.maven.plugins:maven-enforcer-plugin 3.1.0
    • org.apache.maven.plugins:maven-install-plugin 3.1.0
    • org.apache.maven.plugins:maven-jar-plugin 3.3.0
    • org.apache.maven.plugins:maven-javadoc-plugin 3.4.1
    • org.apache.maven.plugins:maven-resources-plugin 3.3.0
    • org.apache.maven.plugins:maven-site-plugin 4.0.0-M4
    • org.apache.maven.plugins:maven-surefire-plugin 3.0.0-M7
    • com.github.spotbugs:spotbugs-maven-plugin 4.7.3.0
    slf4j-tinylog/pom.xml
    tinylog-api-kotlin/pom.xml
    tinylog-api/pom.xml
    tinylog-core/pom.xml
    tinylog-impl/pom.xml

    • [ ] Check this box to trigger a request for Renovate to run again on this repository
    opened by renovate[bot] 0
  • Option to reduce file size

    Option to reduce file size

    I would like to have a core library.

    It doesn't contain too much features.

    Only core features.

    Tinylog is still too fat.

    Don't add features,It immediately becomes Log4j2.

    enhancement help welcome 
    opened by tcmot 1
Releases(2.6.0-M2)
Owner
tinylog.org
tinylog is a lightweight logging framework for Java, Kotlin, Scala, and Android
tinylog.org
This is an Kotlin Library that enables Annotation-triggered method call logging for Kotlin Multiplatform.

This is an Kotlin Library that enables Annotation-triggered method call logging for Kotlin Multiplatform.

Jens Klingenberg 187 Dec 18, 2022
simple Kotlin logging: colorized logs for Kotlin on the JVM

sklog - simple Kotlin logging Kotlin (JVM) logging library for printing colorized text to the console, with an easy upgrade path to the popular kotlin

null 1 Jul 26, 2022
A tiny Kotlin API for cheap logging on top of Android's normal Log class.

A tiny Kotlin API for cheap logging on top of Android's normal Log class.

Square 849 Dec 23, 2022
Kermit is a Kotlin Multiplatform logging utility with composable log outputs

Kermit is a Kotlin Multiplatform logging utility with composable log outputs. The library provides prebuilt loggers for outputting to platform logging tools such as Logcat and NSLog.

Touchlab 395 Jan 4, 2023
A demonstration of Kotlin-logging with logback.

try-kotlin-logging A demonstration of Kotlin-logging with logback. Usage # output a log to STDOUT and file(myApp.log) $ ./gradlew run # => 2021-12-11

Hayato Tachikawa 1 Dec 13, 2021
An in-display logging library for Android 📲

Vlog provides an easy and convenient way to access logs right on your phone.

girish budhwani 121 Dec 26, 2022
Annotation-triggered method call logging for your debug builds.

Hugo Annotation-triggered method call logging for your debug builds. As a programmer, you often add log statements to print method calls, their argume

Jake Wharton 7.9k Dec 31, 2022
Jambo is an open source remote logging library

Jambo Jambo is an open source remote logging library. For those who would like to see their logs remotely on their android device Jambo is the library

Tabasumu 6 Aug 26, 2022
Java Logback Appender for Google Chat(Google Hangouts)

Logback Appender for Google Chat(Google Hangouts) This project is logback appender for Google Chat(Google Hangouts). Setup Add the JitPack repository

Kyungyoon Kim 3 Apr 7, 2022
Kotlin Multi Platform Logger, for android an ios : Logcat & print

Multiplatform Preferences Use a single object : Logger in your kotlin shared projects to display logs Note you can also use it in your real code on An

Florent CHAMPIGNY 49 Aug 22, 2022
Napier is a logger library for Kotlin Multiplatform.

Napier is a logger library for Kotlin Multiplatform. It supports for the android, ios, jvm, js. Logs written in common module are displayed on logger

Akira Aratani 457 Jan 7, 2023
Yakl - Yet Another Kotlin Logger

YAKL Yet Another Kotlin Logger. Motivation Current jvm loggers have some disadva

Mark Kosichkin 4 Jan 19, 2022
✔️ Simple, pretty and powerful logger for android

Logger Simple, pretty and powerful logger for android Setup Download implementation 'com.orhanobut:logger:2.2.0' Initialize Logger.addLogAdapter(new A

Orhan Obut 13.5k Dec 30, 2022
An easy way to customize your log in Android,including output to console, writing log to file in high performance way and so on

EasyLog An easy way to customize your log in Android,including output to console, writing log to file in high performance way and so on. 1. Initializa

Taylor 40 Dec 8, 2022
An OkHttp interceptor which has pretty logger for request and response. +Mock support

LoggingInterceptor - Interceptor for OkHttp3 with pretty logger Usage val client = OkHttpClient.Builder() client.addInterceptor(LoggingInterceptor

ihsan BAL 1.3k Dec 26, 2022
Utility logger library for storing logs into database and push them to remote server for debugging

HyperLog Android Overview Log format Download Initialize Usage Get Logs in a File Push Logs Files to Remote Server Sample Testing Endpoint using Reque

HyperTrack 675 Nov 14, 2022
Timber + Logger Integration. Make Logcat Prettier, show thread information and more.

Pretty Timber Android Logcat Timber + Logger Integration Video Instructions: https://youtu.be/zoS_i8VshCk Code App.kt class App : Application() {

Awesome Dev Notes | Android Dev Notes YouTube 29 Jun 6, 2022
Simple application to log your mood through the day and explain feature flags.

Mood Logger App (Android version) This Repo This repository contains code for building a very basic application to log your mood through the days. The

MongoDB Developer Relations 3 Oct 24, 2021
Library that makes debugging, log collection, filtering and analysis easier.

AndroidLogger Android Library that makes debugging, log collection, filtering and analysis easier. Contains 2 modules: Logger: 'com.github.ShiftHackZ.

ShiftHackZ 2 Jul 13, 2022