{"id":39132106,"url":"https://github.com/y-scope/log4j1-appenders","last_synced_at":"2026-01-17T21:19:03.436Z","repository":{"id":87891921,"uuid":"594983846","full_name":"y-scope/log4j1-appenders","owner":"y-scope","description":null,"archived":false,"fork":false,"pushed_at":"2025-02-03T05:03:09.000Z","size":65,"stargazers_count":3,"open_issues_count":1,"forks_count":2,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-02-03T06:18:59.600Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/y-scope.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}},"created_at":"2023-01-30T06:23:20.000Z","updated_at":"2025-02-03T05:02:11.000Z","dependencies_parsed_at":"2023-12-05T12:27:28.989Z","dependency_job_id":"f033d43e-2c5f-43f8-ae22-1404289627ba","html_url":"https://github.com/y-scope/log4j1-appenders","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/y-scope/log4j1-appenders","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/y-scope%2Flog4j1-appenders","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/y-scope%2Flog4j1-appenders/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/y-scope%2Flog4j1-appenders/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/y-scope%2Flog4j1-appenders/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/y-scope","download_url":"https://codeload.github.com/y-scope/log4j1-appenders/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/y-scope%2Flog4j1-appenders/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28518618,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T18:55:29.170Z","status":"ssl_error","status_checked_at":"2026-01-17T18:55:03.375Z","response_time":85,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2026-01-17T21:19:03.350Z","updated_at":"2026-01-17T21:19:03.425Z","avatar_url":"https://github.com/y-scope.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# log4j1-appenders\n\nThis package contains useful Log4j appenders. Currently, it contains:\n\n* `ClpIrFileAppender` - Used to compress log events using \n  [CLP](https://github.com/y-scope/clp)'s IR stream format, allowing users to\n  achieve higher compression than general-purpose compressors while the logs\n  are being generated.\n\n* `AbstractBufferedRollingFileAppender` - An abstract class which enforces an\n  opinionated workflow, skeleton interfaces and hooks optimized towards\n  buffered rolling file appender implementations with remote persistent\n  storage. In addition, the abstract class implements verbosity-aware\n  hard+soft timeout based log freshness policy.\n\n* `AbstractClpirBufferedRollingFileAppender` - Provides size-based file\n  rollover, log freshness guarantee and streaming compression offered in\n  `ClpIrFileAppender`. \n\n# Usage\n\n## `ClpIrFileAppender`\n1. Add the package and its dependencies to the `dependencies` section of your \n   your `pom.xml`:\n\n   ```xml\n   \u003cdependencies\u003e\n     \u003c!-- The appenders --\u003e\n     \u003cdependency\u003e\n       \u003cgroupId\u003ecom.yscope.logging\u003c/groupId\u003e\n       \u003cartifactId\u003elog4j1-appenders\u003c/artifactId\u003e\n       \u003cversion\u003e0.0.0\u003c/version\u003e\n     \u003c/dependency\u003e\n     \u003c!-- Packages that log4j1-appenders depends on --\u003e\n     \u003cdependency\u003e\n       \u003cgroupId\u003ecom.github.luben\u003c/groupId\u003e\n       \u003cartifactId\u003ezstd-jni\u003c/artifactId\u003e\n       \u003cversion\u003e1.5.2-1\u003c/version\u003e\n     \u003c/dependency\u003e\n     \u003cdependency\u003e\n       \u003cgroupId\u003elog4j\u003c/groupId\u003e\n       \u003cartifactId\u003elog4j\u003c/artifactId\u003e\n       \u003cversion\u003e1.2.17\u003c/version\u003e\n       \u003cscope\u003eprovided\u003c/scope\u003e\n     \u003c/dependency\u003e\n   \u003c/dependencies\u003e\n   ```\n\n2. Add the appender to your log4j configuration file. Here is a sample \n   log4j.properties file:\n\n   ```properties\n    log4j.rootLogger=INFO, clpir\n    \n    log4j.appender.clpir=com.yscope.logging.log4j1.ClpIrFileAppender\n    log4j.appender.clpir.layout=org.apache.log4j.EnhancedPatternLayout\n    # NOTE:\n    # 1. This appender doesn't require a date conversion pattern in the \n    #    conversion pattern. This is because the CLP appender stores the \n    #    timestamp separately from the message. CLP's IR decoders will allow \n    #    users to specify their desired timestamp format when decoding the logs.\n    # 2. If a date conversion pattern is added, it will be removed from the \n    #    conversion pattern. This may result in an ugly conversion pattern since \n    #    the spaces around the date pattern are not removed.\n    log4j.appender.clpir.layout.ConversionPattern=%p [%c{1}] %m%n\n    log4j.appender.clpir.file=logs.clp.zst\n    # Use CLP's four-byte encoding for lower memory usage at the cost of some\n    # compression ratio\n    log4j.appender.clpir.useFourByteEncoding=true\n    # closeFrameOnFlush:\n    # - true: any data buffered by the compressor is immediately flushed to disk;\n    #   frequent flushes may lower compression ratio significantly\n    # - false: any compressed data that is ready for writing will be flushed to disk\n    log4j.appender.clpir.closeFrameOnFlush=false\n    # compressionLevel: Higher compression levels may increase compression ratio\n    # but will slow down compression. Valid compression levels are 1-19.\n    log4j.appender.clpir.compressionLevel=3\n   ```\n   \n## `AbstractClpIrBufferedRollingFileAppender`\nTo use class, we expect user to implement at minimum the `sync()` method to\nperform file upload to remote persistent store.\n\n# Providing Feedback\n\nYou can use GitHub issues to [report a bug](https://github.com/y-scope/log4j1-appenders/issues/new?assignees=\u0026labels=bug\u0026template=bug-report.yml)\nor [request a feature](https://github.com/y-scope/log4j1-appenders/issues/new?assignees=\u0026labels=enhancement\u0026template=feature-request.yml).\n\n# Building\n\n* Build and test\n  ```shell\n  mvn package\n  ```\n* Build without any extras\n  ```shell\n  mvn package -DskipTests -Dmaven.javadoc.skip=true -Dmaven.source.skip\n  ```\n\n# Testing\n\n```shell\nmvn test\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fy-scope%2Flog4j1-appenders","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fy-scope%2Flog4j1-appenders","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fy-scope%2Flog4j1-appenders/lists"}