{"id":16970132,"url":"https://github.com/joyang1/slf4j4json","last_synced_at":"2025-07-26T16:32:59.644Z","repository":{"id":39962354,"uuid":"145835812","full_name":"joyang1/slf4j4json","owner":"joyang1","description":"json logger;  kafka json logger;","archived":false,"fork":false,"pushed_at":"2022-07-01T21:24:37.000Z","size":142,"stargazers_count":11,"open_issues_count":3,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-19T02:54:18.523Z","etag":null,"topics":["json","kafka","log4j","logger"],"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/joyang1.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}},"created_at":"2018-08-23T10:05:09.000Z","updated_at":"2025-03-31T04:09:54.000Z","dependencies_parsed_at":"2022-08-25T09:10:15.451Z","dependency_job_id":null,"html_url":"https://github.com/joyang1/slf4j4json","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/joyang1/slf4j4json","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joyang1%2Fslf4j4json","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joyang1%2Fslf4j4json/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joyang1%2Fslf4j4json/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joyang1%2Fslf4j4json/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/joyang1","download_url":"https://codeload.github.com/joyang1/slf4j4json/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joyang1%2Fslf4j4json/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267192734,"owners_count":24050575,"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-07-26T02:00:08.937Z","response_time":62,"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":["json","kafka","log4j","logger"],"created_at":"2024-10-14T00:27:29.049Z","updated_at":"2025-07-26T16:32:59.574Z","avatar_url":"https://github.com/joyang1.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/joyang1/slf4j4json.svg?branch=master)](https://travis-ci.org/joyang1/slf4j4json.svg)\n[![GitHub issues](https://img.shields.io/github/release/joyang1/slf4j4json.svg)](https://github.com/joyang1/slf4j4json/releases/latest)\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/cn.tommyyang/slf4j4json/badge.svg)](https://maven-badges.herokuapp.com/maven-central/cn.tommyyang/slf4j4json)\n\n# `slf4j4json`\n\u003e 最好用的 Kafka Json Logger Java客户端。\n\n**最好用的 Kafka Json Logger 库；不尝试一下可惜了！**\n\n## Description\n\n一款为 Kafka 提供的 json logger 客户端，支持将 json 格式的 log 输出到 kafka、文件、控制台。\n\n支持 slf4j 的全部功能。\n\n比 KafkaLog4jAppender 更好用，可配置性更好。\n\n支持 close  logger， 在程序关闭之前 flush log to kafka。\n\n支持链式编程模式，方便用户使用。\n\n\n## maven dependency\n\n1. 添加repository\n\n``` java\n\u003crepositories\u003e\n    \u003crepositories\u003e\n         \u003crepository\u003e\n             \u003cid\u003erelease\u003c/id\u003e\n             \u003curl\u003ehttps://raw.github.com/joyang1/slf4j4json/mvn-repo/\u003c/url\u003e\n             \u003csnapshots\u003e\n                 \u003cenabled\u003etrue\u003c/enabled\u003e\n                 \u003cupdatePolicy\u003ealways\u003c/updatePolicy\u003e\n             \u003c/snapshots\u003e\n         \u003c/repository\u003e\n     \u003c/repositories\u003e\n\u003c/repositories\u003e\n```\n\n2. 添加dependency\n\n``` java\n\u003cdependency\u003e\n    \u003cgroupId\u003ecn.tommyyang\u003c/groupId\u003e\n    \u003cartifactId\u003eslf4j4json\u003c/artifactId\u003e\n    \u003cversion\u003e1.4.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n### 使用\n#### 需要配置log4j.properties\n因为该 jar 包同样是依赖于 slf4j， 所以按 log4j 配置 log4j.properties 即可正常使用。\nlog4j.properties 的详细配置说明请参考[log4j 配置说明](https://github.com/joyang1/log4j)\n\n``` properties\nlog4j.rootLogger=DEBUG,console\n\n#输出日志到控制台\nlog4j.appender.console=org.apache.log4j.ConsoleAppender\nlog4j.appender.console.Threshold=all\nlog4j.appender.console.layout=org.apache.log4j.PatternLayout\nlog4j.appender.console.layout.ConversionPattern=%-d{yyyy-MM-dd HH\\:mm\\:ss} [%c\\:%L]-[%p] %m%n\n```\n\n#### slf4j4json使用\n    \n1. 直接打印\n跟 slf4j 类似，不过该库提供链式编程方式，便于用户使用。\n\n``` java\n\n//通过LoggerFactory获取一个logger\nfinal static Logger logger = LoggerFactory.getLogger(Test.class);\n\n//打印必须调用log()方法\nlogger.info().field(\"key1\", \"value1\").intField(\"key2\", 1).log();\nlogger.warn().field(\"key1\", \"value1\").intField(\"key2\", 1).log();\nlogger.debug().strField(\"key1\", \"value1\").longField(\"key2\", 1L).log();\nlogger.trace().strField(\"key1\", \"value1\").intField(\"key2\", 1).log();\nlogger.error().strField(\"key1\", \"value1\").intField(\"key2\", 1).log();\n\n```\n\n2. 比如有一些键值对要重复赋值,使用getLogger方法，实例如下\n\n``` java\n\nJsonLogger jsonLogger = logger.info().strField(\"appname\", \"app\").getLogger();\njsonLogger.strField(\"msg\",\"infotest1\").intField(\"port\", 2).log();\njsonLogger.field(\"msg\",\"infotest2\").longField(\"long\", 23L).log();\n\n```\n\n3. 1.4.0更新, 只提供getLogger方法\n\n- 配置了 LogConfig 则打印 log 到 kafka，否则打印 log 到 file；\n\n- 如果打印 log 到 file 文件或者控制台，则需要配置 log4j.properties，具体如何配置见[使用](#使用)；\n \n- 如果只用打印 log 到 kafka，则不用配置 log4j.properties。\n\n``` java\n\nLogConfig conf = new LogConfig(\"Vinci\", LogLevel.INFO, \"localhost:9092\", \"admin-app-log\");\nLoggerFactory.openKafkaLogger(conf);\n\nLogger logger  = LoggerFactory.getLogger();\n\nlogger.info().strField(\"test\", \"test-info\").log();\nlogger.error().strField(\"test\", \"test-error\").log();\nlogger.warn().strField(\"test\", \"test-warn\").log();\nlogger.debug().strField(\"test\", \"test-debug\").log();\n\n\n```\n\n## 输出\n```json\n\n{\"key1\":\"value1\",\"key2\":1,\"index\":\"server-end-log\",\"host\":\"DESKTOP-2B1VG6J\",\"level\":\"info\",\"time\":1535021174}\n\n```\n\n\n## version\n- `1.0版本`\n\n    - 实现 JsonLog For Java 的基本功能\n    \n    - 使用 KafkaLog4jAppender 打印 log 到 Kafka\n    \n- `1.1版本`\n\n    - 修复JsonLogger jsonLogger = logger.info().strField(\"appname\", \"app\").getLogger(); 出现重复内容的bug\n\n- `1.2版本`\n\n   - 去掉log中自带的index键值对\n   \n   - repository修改\n     \n     ``` java\n     \n     \u003crepositories\u003e\n         \u003crepository\u003e\n             \u003cid\u003erelease\u003c/id\u003e\n             \u003curl\u003ehttps://raw.github.com/joyang1/slf4j4json/mvn-repo/\u003c/url\u003e\n             \u003csnapshots\u003e\n                 \u003cenabled\u003etrue\u003c/enabled\u003e\n                 \u003cupdatePolicy\u003ealways\u003c/updatePolicy\u003e\n             \u003c/snapshots\u003e\n         \u003c/repository\u003e\n     \u003c/repositories\u003e\n     \n     ```\n- `1.3.0版本`\n\n  - 添加kafka logger的实现，批量打印log到kafka\n  \n  - 10s或者5m flush一次\n  \n- `1.4.0版本`\n\n  - 优化logger实现\n     \n     \n## License\nSlf4j4json is available under the MIT License\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoyang1%2Fslf4j4json","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoyang1%2Fslf4j4json","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoyang1%2Fslf4j4json/lists"}