{"id":42989525,"url":"https://github.com/domclick/kafka-logback","last_synced_at":"2026-01-31T02:35:08.929Z","repository":{"id":55456329,"uuid":"84428716","full_name":"domclick/kafka-logback","owner":"domclick","description":null,"archived":false,"fork":false,"pushed_at":"2024-04-22T08:35:06.000Z","size":38,"stargazers_count":34,"open_issues_count":3,"forks_count":13,"subscribers_count":3,"default_branch":"master","last_synced_at":"2026-01-14T17:16:46.991Z","etag":null,"topics":["java","kafka","logback","logback-appender","logging"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/domclick.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":"2017-03-09T10:21:38.000Z","updated_at":"2025-08-13T11:16:39.000Z","dependencies_parsed_at":"2024-04-22T09:45:58.101Z","dependency_job_id":"86fc5f88-699c-46b3-91f0-a992eabfa282","html_url":"https://github.com/domclick/kafka-logback","commit_stats":null,"previous_names":["sberned/kafka-logback"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/domclick/kafka-logback","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domclick%2Fkafka-logback","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domclick%2Fkafka-logback/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domclick%2Fkafka-logback/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domclick%2Fkafka-logback/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/domclick","download_url":"https://codeload.github.com/domclick/kafka-logback/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domclick%2Fkafka-logback/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28927259,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-30T22:32:35.345Z","status":"online","status_checked_at":"2026-01-31T02:00:09.179Z","response_time":128,"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","kafka","logback","logback-appender","logging"],"created_at":"2026-01-31T02:35:08.668Z","updated_at":"2026-01-31T02:35:08.893Z","avatar_url":"https://github.com/domclick.png","language":"Java","readme":"# Kafka logback appender [![](https://jitpack.io/v/Sberned/kafka-logback.svg)](https://jitpack.io/#Sberned/kafka-logback) ![](https://travis-ci.org/Sberned/kafka-logback.svg?branch=master) ![](https://maven-badges.herokuapp.com/maven-central/ru.sberned/kafka-logback/badge.svg)\n\nThis is a logback appender for Kafka (3.7.0 kafka-client used)\nThis appender expects topic, bootstrapServers, valueSerializer and layout as mandatory.\nYou could also supply additional kafka customProps in `\u003ccustomProps\u003e` tag in the following manner\n`\u003ccustomProps\u003ekey1|value1,key2|value2\u003c/customProps\u003e`\n\u003cp\u003e\nWe recommend wrapping this appender inside AsyncAppender in order not to block your application (consider setting neverBlock to true).\nThis appender ships with CustomJsonLayout, which extends JsonLayout from logback. It inherits all its properties and adds its own in the same manner.\nList of properties added: includeLineNumber, includeClassName, includeMethodName, includeHost, includeFileName all set to true by default.\nYou can also add any constant fields via additionalFields (see sample config below).\n\u003cp\u003e\nDo not forget to add `\u003cincludeCallerData\u003etrue\u003c/includeCallerData\u003e` to AsyncAppender in case you need caller data (method, class, file, line number).\nKafka appender could be used with any other layout rather than Json, just think about proper kafka value Serializer.\n\u003cp\u003e\nSample configuration\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003cconfiguration\u003e\n\n    \u003cappender name=\"KAFKA\" class=\"ru.sberned.kafkalogback.KafkaAppender\"\u003e\n        \u003ctopic\u003e\u003cyour_topic_name\u003e\u003c/topic\u003e\n        \u003cbootstrapServers\u003e\u003cserver1\u003e,\u003cserver2\u003e\u003c/bootstrapServers\u003e\n        \u003cvalueSerializer\u003eorg.apache.kafka.common.serialization.StringSerializer\u003c/valueSerializer\u003e\n        \u003cfailOnStartup\u003efalse\u003c/failOnStartup\u003e\n        \u003ccustomProp\u003eacks|all\u003c/customProp\u003e\n        \u003clayout class=\"ru.sberned.kafkalogback.CustomJsonLayout\"\u003e\n            \u003ctimestampFormat\u003eyyyy-MM-dd'T'HH:mm:ssZ\u003c/timestampFormat\u003e\n            \u003cjsonFormatter class=\"ch.qos.logback.contrib.jackson.JacksonJsonFormatter\"/\u003e\n            \u003cadditionalField\u003eenvironment|${KAFKA_ENVIRONMENT:-dev}\u003c/additionalField\u003e\n        \u003c/layout\u003e\n    \u003c/appender\u003e\n\n    \u003cappender name=\"ASYNC\" class=\"ch.qos.logback.classic.AsyncAppender\"\u003e\n        \u003cneverBlock\u003etrue\u003c/neverBlock\u003e\n        \u003cincludeCallerData\u003etrue\u003c/includeCallerData\u003e\n        \u003cappender-ref ref=\"KAFKA\" /\u003e\n    \u003c/appender\u003e\n\n    \u003c!-- Do not sent kafka client logs to kafka. This way you could fill all the queue of AsyncAppender--\u003e\n    \u003clogger name=\"org.apache.kafka\" level=\"INFO\" additivity=\"false\"\u003e\n        \u003cappender-ref ref=\"CONSOLE\" /\u003e\n        \u003cappender-ref ref=\"FILE\" /\u003e\n    \u003c/logger\u003e\n\n    \u003c!-- Please note. CONSOLE and FILE appenders are not defined in this example --\u003e\n    \u003croot level=\"TRACE\"\u003e\n        \u003cappender-ref ref=\"CONSOLE\" /\u003e\n        \u003cappender-ref ref=\"FILE\" /\u003e\n        \u003cappender-ref ref=\"ASYNC\" /\u003e\n    \u003c/root\u003e\n\n\u003c/configuration\u003e\n```\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdomclick%2Fkafka-logback","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdomclick%2Fkafka-logback","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdomclick%2Fkafka-logback/lists"}