{"id":19485755,"url":"https://github.com/husthuke/trace4j","last_synced_at":"2025-04-07T12:06:01.001Z","repository":{"id":86819480,"uuid":"86682328","full_name":"husthuke/trace4j","owner":"husthuke","description":"基于注解的轻量级java流程跟踪工具","archived":false,"fork":false,"pushed_at":"2023-12-16T18:20:13.000Z","size":35,"stargazers_count":312,"open_issues_count":3,"forks_count":32,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-03-31T10:06:56.781Z","etag":null,"topics":["lightweight","logger","trace"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/husthuke.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2017-03-30T09:07:26.000Z","updated_at":"2025-01-21T15:38:55.000Z","dependencies_parsed_at":"2024-11-24T22:02:47.520Z","dependency_job_id":"d62fb6b7-92fc-40e6-9aca-55d22b25cd4c","html_url":"https://github.com/husthuke/trace4j","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/husthuke%2Ftrace4j","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/husthuke%2Ftrace4j/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/husthuke%2Ftrace4j/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/husthuke%2Ftrace4j/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/husthuke","download_url":"https://codeload.github.com/husthuke/trace4j/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247648976,"owners_count":20972945,"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","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":["lightweight","logger","trace"],"created_at":"2024-11-10T20:29:58.250Z","updated_at":"2025-04-07T12:06:00.977Z","avatar_url":"https://github.com/husthuke.png","language":"Java","funding_links":[],"categories":["日志库"],"sub_categories":[],"readme":"# 框架项目介绍\n本框架项目为了解决中小型企业级java项目调用流程的性能追踪问题，提供便捷快速的调用流程追踪日志记录，同时可以记录每个调用函数的耗时。\n对于采用executorServic开发的多线程程序同样可以进行追踪，能够加快排查线上多线程问题。\n固然目前有比如Zipkin，Drapper这些分布式追踪系统，能够全面的追踪分布式系统的调用链路，但是对于中小型的企业项目搭建及维护成本过高。\n地址：https://github.com/husthuke/trace4j\n\n# Qucik Start\n在使需要开启追踪日志的项目中引用trace4j-core工程。\n```\n    \u003cdependency\u003e\n        \u003cgroupId\u003ecom.hooke\u003c/groupId\u003e\n        \u003cartifactId\u003etrace4j-core\u003c/artifactId\u003e\n        \u003cversion\u003e1.0-SNAPSHOT\u003c/version\u003e\n    \u003c/dependency\u003e\n```\n\n为需要进行日志追踪的方法增加如下注解\n```\n    @Trace(processName = \"test\",startStep = true)\n    public void doSomeThing1(){\n        System.out.println(\"doSomeThing1\");\n    }\n```\n\n结合spring aspect机制定义业务aop\n```\n     \u003c!--Aspect的方式实现trace监测--\u003e\n     \u003cbean id=\"traceAspect\" class=\"com.hooke.trace.aop.spring.TraceAspect\"\u003e\n     \u003c/bean\u003e\n\n     \u003caop:config\u003e\n         \u003caop:pointcut id=\"tracePointcutAspect\"\n                       expression=\"execution(* com.hooke.biz..*(..))\"/\u003e\n         \u003caop:aspect id=\"traceSpringAspect\" ref=\"traceAspect\"\u003e\n             \u003caop:around\n                     pointcut-ref=\"tracePointcutAspect\"\n                     method=\"trace\"/\u003e\n         \u003c/aop:aspect\u003e\n     \u003c/aop:config\u003e\n```\n\n\n追踪日志格式\n```\n    \"threadId:\" + 调用线程ID +\n    \" triceId:\" + 追踪ID +\n    \" sessionId:\" + 会话ID +\n    \" ProcessName:\" + 追踪流程名称 +\n    \" ProcessStep:\" + 追踪路程步骤 +\n    \" Joinpoint:\" + aop连接点信息 +\n    \" argsJson:\" + 方法入参信息 +\n    \" returnJson:\" + 方法返回信息 +\n    \" cost:\"+ 调用耗时 + \" ms!\"\n```\n\n运行结果示例：\n```\n1579 [main] INFO  c.h.trace.aop.spring.TraceAspect - threadId:1 triceId:887c67ff-7681-4fea-8e9f-e7d3838766f9 sessionId:null ProcessName:test ProcessStep:1. Joinpoint:execution(void com.hooke.biz.TraceTest.doSomeThing1()) argsJson: returnJson: cost:882 ms!\n1589 [main] INFO  c.h.trace.aop.spring.TraceAspect - threadId:1 triceId:887c67ff-7681-4fea-8e9f-e7d3838766f9 sessionId:null ProcessName:test ProcessStep:2. Joinpoint:execution(void com.hooke.biz.TraceTest.doSomeThing1()) argsJson: returnJson: cost:0 ms!\n1590 [main] INFO  c.h.trace.aop.spring.TraceAspect - threadId:1 triceId:887c67ff-7681-4fea-8e9f-e7d3838766f9 sessionId:null ProcessName:test ProcessStep:3. Joinpoint:execution(void com.hooke.biz.TraceTest.doSomeThing2()) argsJson: returnJson: cost:1 ms!\n1603 [main] INFO  c.h.trace.aop.spring.TraceAspect - threadId:1 triceId:887c67ff-7681-4fea-8e9f-e7d3838766f9 sessionId:null ProcessName:test ProcessStep:4. Joinpoint:execution(int com.hooke.biz.TraceTest.doSomeThing3(String)) argsJson:\"testmethod3\" returnJson:0 cost:13 ms!\n1764 [Thread-3] INFO  c.h.trace.aop.spring.TraceAspect - threadId:14 triceId:887c67ff-7681-4fea-8e9f-e7d3838766f9 sessionId:null ProcessName:test ProcessStep:4.2. Joinpoint:execution(void com.hooke.biz.TraceTest.doSomeThing2()) argsJson: returnJson: cost:1 ms!\n1764 [Thread-1] INFO  c.h.trace.aop.spring.TraceAspect - threadId:12 triceId:887c67ff-7681-4fea-8e9f-e7d3838766f9 sessionId:null ProcessName:test ProcessStep:4.3. Joinpoint:execution(void com.hooke.biz.TraceTest.doSomeThing2()) argsJson: returnJson: cost:15 ms!\n1764 [Thread-2] INFO  c.h.trace.aop.spring.TraceAspect - threadId:13 triceId:887c67ff-7681-4fea-8e9f-e7d3838766f9 sessionId:null ProcessName:test ProcessStep:4.1. Joinpoint:execution(void com.hooke.biz.TraceTest.doSomeThing2()) argsJson: returnJson: cost:15 ms!\n1866 [Thread-4] INFO  c.h.trace.aop.spring.TraceAspect - threadId:15 triceId:887c67ff-7681-4fea-8e9f-e7d3838766f9 sessionId:null ProcessName:test ProcessStep:4.4. Joinpoint:execution(void com.hooke.biz.TraceTest.doSomeThing2()) argsJson: returnJson: cost:0 ms!\n1964 [Thread-5] INFO  c.h.trace.aop.spring.TraceAspect - threadId:16 triceId:887c67ff-7681-4fea-8e9f-e7d3838766f9 sessionId:null ProcessName:test ProcessStep:4.5. Joinpoint:execution(void com.hooke.biz.TraceTest.doSomeThing2()) argsJson: returnJson: cost:0 ms!\n2066 [Thread-6] INFO  c.h.trace.aop.spring.TraceAspect - threadId:17 triceId:887c67ff-7681-4fea-8e9f-e7d3838766f9 sessionId:null ProcessName:test ProcessStep:4.6. Joinpoint:execution(void com.hooke.biz.TraceTest.doSomeThing2()) argsJson: returnJson: cost:0 ms!\n2177 [Thread-7] INFO  c.h.trace.aop.spring.TraceAspect - threadId:18 triceId:887c67ff-7681-4fea-8e9f-e7d3838766f9 sessionId:null ProcessName:test ProcessStep:4.7. Joinpoint:execution(void com.hooke.biz.TraceTest.doSomeThing2()) argsJson: returnJson: cost:1 ms!\n2275 [Thread-8] INFO  c.h.trace.aop.spring.TraceAspect - threadId:19 triceId:887c67ff-7681-4fea-8e9f-e7d3838766f9 sessionId:null ProcessName:test ProcessStep:4.8. Joinpoint:execution(void com.hooke.biz.TraceTest.doSomeThing2()) argsJson: returnJson: cost:0 ms!\n2403 [Thread-9] INFO  c.h.trace.aop.spring.TraceAspect - threadId:20 triceId:887c67ff-7681-4fea-8e9f-e7d3838766f9 sessionId:null ProcessName:test ProcessStep:4.9. Joinpoint:execution(void com.hooke.biz.TraceTest.doSomeThing2()) argsJson: returnJson: cost:0 ms!\n2492 [Thread-10] INFO  c.h.trace.aop.spring.TraceAspect - threadId:21 triceId:887c67ff-7681-4fea-8e9f-e7d3838766f9 sessionId:null ProcessName:test ProcessStep:4.10. Joinpoint:execution(void com.hooke.biz.TraceTest.doSomeThing2()) argsJson: returnJson: cost:0 ms!\n2591 [Thread-11] INFO  c.h.trace.aop.spring.TraceAspect - threadId:22 triceId:887c67ff-7681-4fea-8e9f-e7d3838766f9 sessionId:null ProcessName:test ProcessStep:4.11. Joinpoint:execution(void com.hooke.biz.TraceTest.doSomeThing2()) argsJson: returnJson: cost:0 ms!\n2700 [Thread-12] INFO  c.h.trace.aop.spring.TraceAspect - threadId:23 triceId:887c67ff-7681-4fea-8e9f-e7d3838766f9 sessionId:null ProcessName:test ProcessStep:4.12. Joinpoint:execution(void com.hooke.biz.TraceTest.doSomeThing2()) argsJson: returnJson: cost:0 ms!\n2800 [main] INFO  c.h.trace.aop.spring.TraceAspect - threadId:1 triceId:887c67ff-7681-4fea-8e9f-e7d3838766f9 sessionId:null ProcessName:test ProcessStep:5. Joinpoint:execution(void com.hooke.biz.TraceTest.doSomeThing2()) argsJson: returnJson: cost:0 ms!\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhusthuke%2Ftrace4j","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhusthuke%2Ftrace4j","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhusthuke%2Ftrace4j/lists"}