{"id":13753598,"url":"https://github.com/leoChaoGlut/log-sys","last_synced_at":"2025-05-09T21:35:17.867Z","repository":{"id":105723374,"uuid":"72602106","full_name":"leoChaoGlut/log-sys","owner":"leoChaoGlut","description":"A distributed log system which is based on spring cloud \u0026 docker","archived":false,"fork":false,"pushed_at":"2018-04-17T08:56:24.000Z","size":1797,"stargazers_count":161,"open_issues_count":5,"forks_count":96,"subscribers_count":19,"default_branch":"master","last_synced_at":"2024-11-16T06:30:30.730Z","etag":null,"topics":["distributed-systems","log","microservice","springcloud"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/leoChaoGlut.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":"2016-11-02T03:50:14.000Z","updated_at":"2024-11-13T05:56:50.000Z","dependencies_parsed_at":"2023-06-13T08:45:11.452Z","dependency_job_id":null,"html_url":"https://github.com/leoChaoGlut/log-sys","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leoChaoGlut%2Flog-sys","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leoChaoGlut%2Flog-sys/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leoChaoGlut%2Flog-sys/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leoChaoGlut%2Flog-sys/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leoChaoGlut","download_url":"https://codeload.github.com/leoChaoGlut/log-sys/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253328950,"owners_count":21891554,"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":["distributed-systems","log","microservice","springcloud"],"created_at":"2024-08-03T09:01:25.499Z","updated_at":"2025-05-09T21:35:17.385Z","avatar_url":"https://github.com/leoChaoGlut.png","language":"JavaScript","funding_links":[],"categories":["springcloud"],"sub_categories":[],"readme":"# 说明\n- 日志追踪模型基于论文: Dapper\n  - [英文原文](http://research.google.com/pubs/pub36356.html)\n  - [论文译文](http://bigbully.github.io/Dapper-translation/)\n# 功能简介\n- 多余信息过滤\n- 规范日志打印格式\n- 微服务应用日志采集\n- 高效日志查询,问题定位\n- 精确定位关键词所处上下文\n- 精确定位关键词所处业务跨应用日志链\n# 工程模块简介\n- log-common:     ☞整个工程的common包.所有需要被采集日志的应用,都需要引用这个包.(使用logback来打印日志)\n- log-component: ☞功能组件\n  - log-component-aggregator: ☞日志内容聚合器,索引聚合.\n  - log-component-common: ☞功能组件的common包\n  - log-component-filter: ☞过滤\"非目标关键词的日志内容\"\n  - log-component-index:☞ 基础索引数据结构:[上下文索引,key value索引,keyword索引]\n  - log-component-scanner: ☞日志扫描器,索引扫描器.\n  - log-component-search-engine: ☞把关键词等信息交给搜索引擎,它能帮你找到你想要的日志\n- log-front-end: ☞前端代码\n- log-resource: ☞相关资源文件,如sql,shell,redis,服务配置等.\n- log-service: ☞日志系统所有服务\n  - log-service-collector: ☞最重要的服务-\u003e采集器 每一台服务器上,只需要配置一个采集器,它可以采集这台服务器上的多个应用的日志.它还提供[实时日志,历史日志,跨应用日志,定时任务]等功能\n  - log-service-collector-service: ☞\"采集器服务\",顾名思义:为采集器而服务..它的功能:[注册采集器,让采集器获取数据]\n  - log-service-common: ☞日志系统服务的common包\n  - log-service-tracer: ☞与Spring Cloud 的 tracer类似,用于收集跨应用日志.如果应用日志量很多,可以考虑将该服务器拆为一读一写的2个实例.\n- log-service-center: ☞Spring Cloud的核心组件\n  - log-service-center-config-center: ☞配置中心\n  - log-service-center-gateway: ☞统一入口网关\n  - log-service-center-registry: ☞注册中心\n# 开发环境\n- intellj idea\n- jdk1.7\n- maven3.3.9\n- nodejs6.9.2\n# 相关技术\n- [Spring Cloud Camden.SR6](http://cloud.spring.io/spring-cloud-static/Camden.SR6/)\n- [Spring Boot 1.4.5](http://docs.spring.io/spring-boot/docs/1.4.5.RELEASE/reference/htmlsingle/)\n- [Vue](https://github.com/vuejs/vue)\n- [Element UI](http://element.eleme.io/)\n- [Sockjs](https://github.com/sockjs/sockjs-client)\n- [Redis3.2.8](https://redis.io/)\n- [Kafka](http://kafka.apache.org/)\n- [MySQL5.7](https://www.mysql.com/)\n# 日志规范\n* Logback配置: 请使用logback作为日志打印,并将配置文件logback.xml修改如下.[STDOUT,ALL]是必须的Appender.\n```xml\n\u003cconfiguration\u003e\n    \u003cproperty name=\"log.path\" value=\"./log\"\u003e\u003c/property\u003e\n    \u003cproperty name=\"log.context\" value=\"appName\"\u003e\u003c/property\u003e\n\n    \u003ccontextName\u003e${log.context}\u003c/contextName\u003e\n\n    \u003c!--控制台输出--\u003e\n    \u003cappender name=\"STDOUT\" class=\"ch.qos.logback.core.ConsoleAppender\"\u003e\n        \u003cencoder\u003e\n            \u003cpattern\u003e[%d{yyyy-MM-dd HH:mm:ss}][%-5level][%thread][%class.%method:%line]:%m%n\u003c/pattern\u003e\n        \u003c/encoder\u003e\n    \u003c/appender\u003e\n\n    \u003c!--每分钟打印一个log, yyyy/MM/dd/HH/mm 树形目录--\u003e\n    \u003cappender name=\"ALL\" class=\"ch.qos.logback.core.rolling.RollingFileAppender\"\u003e\n        \u003crollingPolicy class=\"ch.qos.logback.core.rolling.TimeBasedRollingPolicy\"\u003e\n            \u003cfileNamePattern\u003e${log.path}/%d{yyyy/MM/dd/HH/mm, aux}/%d{yyyyMMddHHmm}.log\u003c/fileNamePattern\u003e\n        \u003c/rollingPolicy\u003e\n        \u003cencoder\u003e\n            \u003cpattern\u003e[%d{yyyy-MM-dd HH:mm:ss}][%-5level][%thread][%class.%method:%line]:%m%n\u003c/pattern\u003e\n        \u003c/encoder\u003e\n    \u003c/appender\u003e\n\n    \u003c!--打印任意包日志--\u003e\n    \u003croot level=\"INFO\"\u003e\n        \u003cappender-ref ref=\"STDOUT\"/\u003e\n        \u003cappender-ref ref=\"ALL\"/\u003e\n    \u003c/root\u003e\n\u003c/configuration\u003e\n```\n\n* 日志打印:\n\n1.引入依赖:\n  \n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003ecn.yunyichina.log\u003c/groupId\u003e\n  \u003cartifactId\u003elog-common\u003c/artifactId\u003e\n  \u003cversion\u003e1.0-SNAPSHOT\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n2.使用LoggerWrapper替代Logger打印日志:\n\n```java\nLoggerWrapper wrapper = LoggerWrapper.getLogger(Target.class);\nwrapper.info(\"hello\");\nwrapper.getLogger().info(\"world\"); \n```\n\n3.定义上下文:\n```java\n/**\n * User类,有如下方法\n */\npublic String getUserBy(Integer userId){\n  //...\n}\n```\n\n```java\n/**\n * UserAspect类,是User类的一个切面,切点'userPointCut'可切取User类的'getUserBy'方法.\n */\n@Around(\"userPointCut()\")\npublic Object aroundUserPointCut(ProceedingJoinPoint pjp) throws Throwable {\n  wrapper.contextBegin(\"获取用户开始\");//为getUserBy方法生成一个上下文,上下文的开始就是方法被调用之前.此时会利用Mongodb的ObjectId,生成一个id,作为getUserBy这个方法调用的上下文id.\n  Object returnValue = pjp.proceed();//调用getUserBy()\n  wrapper.contextEnd(\"获取用户结束\");//上下文的结束,就是getUserBy返回之后,或者异常捕获之后.\n}\n```\n# 基础架构图\n![](https://raw.githubusercontent.com/leoChaoGlut/log-sys/master/log-resource/Architecture.png) \n# 安装步骤\n[Here](https://github.com/leoChaoGlut/log-sys/issues/6)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FleoChaoGlut%2Flog-sys","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FleoChaoGlut%2Flog-sys","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FleoChaoGlut%2Flog-sys/lists"}