{"id":35012179,"url":"https://github.com/forax/beautiful_logger","last_synced_at":"2025-12-27T05:00:10.240Z","repository":{"id":29046040,"uuid":"120068967","full_name":"forax/beautiful_logger","owner":"forax","description":"Yet another logger API in Java with beautiful features","archived":false,"fork":false,"pushed_at":"2025-12-20T07:34:32.000Z","size":268,"stargazers_count":68,"open_issues_count":0,"forks_count":10,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-12-22T14:21:24.891Z","etag":null,"topics":["java","logger","logger-interface","logging","logging-library","low-overhead"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/forax.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-02-03T07:21:56.000Z","updated_at":"2025-12-20T07:34:29.000Z","dependencies_parsed_at":"2025-02-18T13:34:01.743Z","dependency_job_id":"58e9f123-ce1e-449e-90a9-1aaed8b14866","html_url":"https://github.com/forax/beautiful_logger","commit_stats":null,"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/forax/beautiful_logger","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forax%2Fbeautiful_logger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forax%2Fbeautiful_logger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forax%2Fbeautiful_logger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forax%2Fbeautiful_logger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/forax","download_url":"https://codeload.github.com/forax/beautiful_logger/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forax%2Fbeautiful_logger/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28072674,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-27T02:00:05.897Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","logger","logger-interface","logging","logging-library","low-overhead"],"created_at":"2025-12-27T05:00:03.319Z","updated_at":"2025-12-27T05:00:10.234Z","avatar_url":"https://github.com/forax.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# beautiful_logger [![.github/workflows/main.yml](https://github.com/forax/beautiful_logger/actions/workflows/main.yml/badge.svg)](https://github.com/forax/beautiful_logger/actions/workflows/main.yml)\nYet another logger API in Java with beautiful features\n\nbeautiful_logger is a mostly-zero-overhead wrapper on top of the existing logging implementations with a familiar API (info, error, etc)\nthat let you configure/re-configure the logger dynamically in a programmatic way.\n\nThis library requires at least Java 8 at runtime and is fully compatible with Java 9 modules.\n\nFor the support of Java 15+, the version 0.10.4+ should be used.\n\nThe javadoc of the latest version is [available online](https://jitpack.io/com/github/forax/beautiful_logger/master-SNAPSHOT/javadoc/).\n\n## Features\n- *real* zero cost (no allocation, no branch, no assembly code) if a logger is disabled\n- zero overhead cost when delegating to the logging libraries you already use, SLF4J, Log4J, Logback, JUL or SystemLogger [JEP 264](http://openjdk.java.net/jeps/264).\n- dynamic configuration/re-configuration which doesn't use costly inter-thread signaling\n- no configuration file, no XML, etc, everything is done programmatically\n- very small modular jar with no dependency\n\n\n## Why another logging API ?\n\nTechnically it's more a facade like SLF4J, anyway, beautiful_logger exists because no other existing logging libraries\nprovide at least one of features listed above. \n\n\n## Why do you claim that there is no overhead ?\n\nThe implementation of this API ensures that the JIT can fully inline any calls to the Logger API without decrementing your inlining budget.\nThis is similar to the way, MethodHandle or VarHandle are optimized in the JDK.\nThe main drawback is that it put more pressure to the JITs so it may lengthen the time to steady state of an application.\n\n\n## Example\n\n```java\nimport com.github.forax.beautifullogger.Logger;\n\nclass Example {\n  // getLogger with no argument uses the current class as configuration class\n  private static final Logger LOGGER = Logger.getLogger();\n  \n  public static void main(String[] args) {\n    for(int i = 0; i \u003c 10; i++) {\n      // use a lambda that does not capture any parameters \n      LOGGER.error((int value) -\u003e \"message \" + value, i);\n      \n      if (i == 1) {\n        // disable the logger programmatically\n        LoggerConfig.fromClass(Example.class).update(opt -\u003e opt.enable(false));\n      }\n    }\n  }\n}\n```\n\n## Build Tool Integration [![](https://jitpack.io/v/forax/beautiful_logger.svg)](https://jitpack.io/#forax/beautiful_logger)\n\nGet latest binary distribution via [JitPack](https://jitpack.io/#forax/beautiful_logger) \n\n\n### Maven\n\n```xml\n  \u003crepositories\u003e\n      \u003crepository\u003e\n          \u003cid\u003ejitpack.io\u003c/id\u003e\n          \u003curl\u003ehttps://jitpack.io\u003c/url\u003e\n      \u003c/repository\u003e\n  \u003c/repositories\u003e\n  \u003cdependency\u003e\n      \u003cgroupId\u003ecom.github.forax\u003c/groupId\u003e\n      \u003cartifactId\u003ebeautiful_logger\u003c/artifactId\u003e\n      \u003cversion\u003emaster-SNAPSHOT\u003c/version\u003e\n  \u003c/dependency\u003e\n```\n\n### Gradle\n\n```gradle\n  repositories {\n      ...\n      maven { url 'https://jitpack.io' }\n  }\n  dependencies {\n      compile 'com.github.forax:beautiful_logger:master-SNAPSHOT'\n  }\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fforax%2Fbeautiful_logger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fforax%2Fbeautiful_logger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fforax%2Fbeautiful_logger/lists"}