{"id":15181261,"url":"https://github.com/zhaoligang594/logging-web","last_synced_at":"2026-02-07T04:01:32.203Z","repository":{"id":37116688,"uuid":"279811770","full_name":"zhaoligang594/logging-web","owner":"zhaoligang594","description":"项目的日志中间件","archived":false,"fork":false,"pushed_at":"2022-08-28T05:55:48.000Z","size":137,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-14T23:25:24.691Z","etag":null,"topics":["java-8","logging","middleware","spring","springboot"],"latest_commit_sha":null,"homepage":"","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/zhaoligang594.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}},"created_at":"2020-07-15T08:30:37.000Z","updated_at":"2022-08-28T05:58:23.000Z","dependencies_parsed_at":"2022-09-06T02:30:59.874Z","dependency_job_id":null,"html_url":"https://github.com/zhaoligang594/logging-web","commit_stats":null,"previous_names":["freezingpoint/logging-web"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/zhaoligang594/logging-web","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhaoligang594%2Flogging-web","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhaoligang594%2Flogging-web/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhaoligang594%2Flogging-web/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhaoligang594%2Flogging-web/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zhaoligang594","download_url":"https://codeload.github.com/zhaoligang594/logging-web/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhaoligang594%2Flogging-web/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29186042,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T03:35:06.566Z","status":"ssl_error","status_checked_at":"2026-02-07T03:34:57.604Z","response_time":63,"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":["java-8","logging","middleware","spring","springboot"],"created_at":"2024-09-27T17:00:35.152Z","updated_at":"2026-02-07T04:01:32.182Z","avatar_url":"https://github.com/zhaoligang594.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"### 一、项目解释：\n\n#### 1.1 项目的主要功能\n\n* 该项目是一个日志的中间件，实现可插拔的日志打印。\n* 打印日志的范围主要是对于接口的方法进行打印。\n\n#### 1.2 主要的使用范围\n\n* 无侵入的打印业务逻辑层的执行日志\n* 统一的实现，避免了其他实现的繁杂的配置以及实现的过程\n\n### 二、简单开始组件\n\n#### 2.1 引入依赖\n\n最新版本：\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003evip.breakpoint\u003c/groupId\u003e\n  \u003cartifactId\u003elogging-web\u003c/artifactId\u003e\n  \u003cversion\u003e1.1.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n#### 2.2 首先在我们的配置类上开启日志功能\n\n注解配置：\n\n```java\n@Configuration\n@ComponentScan(basePackages = {\"vip.breakpoint.bean\", \"vip.breakpoint.service\"})\n// 开启日志打印功能\n@EnableLoggingConfiguration\n@Import({MyAspectj.class})\npublic class MainConfig {\n}\n```\n\nxml配置：\n\n```xml\n\u003c!--  日志配置  --\u003e\n    \u003cbean class=\"vip.breakpoint.XmlEnableLoggingConfiguration\"/\u003e\n```\n\n#### 2.3 在我们的接口上使用配置打印日志的方法\n\n##### 2.3.1 接口上配置注解\n\n```java\n@WebLogging(methods = {\"add\"})\npublic interface MyService {\n    int add(int a, int b);\n}\n```\n\n##### 2.3.2 实现类上配置注解\n\n```java\n/**\n * @author :breakpoint/赵立刚\n * @date : 2020/07/16\n */\n@Slf4j\n@Service\n@WebLogging(methods = {\"sub\"})\npublic class SubService {\n\n    public int sub(int a, int b) {\n        log.info(\"vip.breakpoint.service.SubService.sub\");\n        //int i = 1 / 0;\n        return a - b;\n    }\n}\n```\n\n#### 2.4 自定义回调组件\n\n\u003e 继承 EasyLoggingHandleAdaptor 或者实现  EasyLoggingHandle\n\n```java\n/**\n * @author :breakpoint/赵立刚\n * @date : 2020/07/16\n */\n@Service\npublic class MyEasyLoggingHandle extends EasyLoggingHandleAdaptor {\n\n    /**\n     * before invoke method process\n     *\n     * @param methodName is methodName\n     * @param methodArgs is req args\n     */\n    @Override\n    public void invokeBefore(String methodName, Object[] methodArgs) {\n      // 自己的业务逻辑书写的地方，在方法之前调用\n        System.out.println(\"vip.breakpoint.service.MyEasyLoggingHandle.invokeBefore\");\n    }\n\n    /**\n     * after invoke method process\n     *\n     * @param methodName is methodName\n     * @param methodArgs is req args\n     * @param resVal     is return value\n     */\n    @Override\n    public void invokeAfter(String methodName, Object[] methodArgs, Object resVal) {\n      // 自己的业务逻辑书写的地方，在方法之后调用\n        System.out.println(\"vip.breakpoint.service.MyEasyLoggingHandle.invokeAfter\");\n    }\n\n    @Override\n    public void invokeOnThrowing(String methodName, Object[] methodArgs, Throwable e) throws Throwable {\n      \t// 自己的业务逻辑书写的地方，在出现异常调用\n        super.invokeOnThrowing(methodName, methodArgs, e);\n    }\n}\n```\n\n#### 2.5 测试数据执行结果\n\n```shell\n# 执行方法前，logger 日志打印\n06:33:00.135 [main] INFO vip.breakpoint.factory.LoggingCGlibMethodInterceptor - request params:【[12,3]】||request method:【sub】|| request time :【2020-07-17 06:33:00】\n# 调用回调定义组件 回调 方法执行前\nvip.breakpoint.service.MyEasyLoggingHandle.invokeBefore\n## 调用 Spring自己的前置通知\ncom.breakpoint.vip.aspectj.MyAspectj.pointcut.before\n## 调用 真正的方法\n06:33:00.153 [main] INFO vip.breakpoint.service.SubService - vip.breakpoint.service.SubService.sub\n## 调用 Spring自己的后置\ncom.breakpoint.vip.aspectj.MyAspectj.pointcut.after\n## 调用 Spring自己的返回前通知\ncom.breakpoint.vip.aspectj.MyAspectj.afterReturning\n## 执行方法后，logger 日志打印\n06:33:00.153 [main] INFO vip.breakpoint.factory.LoggingCGlibMethodInterceptor - request params:【[12,3]】||request method:【sub】|| complete time:【2020-07-17 06:33:00】||return val:【9】\n# 调用回调定义组件 回调 方法执行后\nvip.breakpoint.service.MyEasyLoggingHandle.invokeAfter\n```\n\n### 三、项目依赖\n\n* JDK 1.8\n* Spring项目环境\n\n### 四、项目结构\n\n```shell\n.\n├── README.md\n├── pic\n│   └── image-20200715171512729.png\n├── pom.xml\n└── src\n    └── main\n        └── java\n            └── vip\n                └── breakpoint\n                    ├── XmlEnableLoggingConfiguration.java\n                    ├── annotion\n                    │   ├── EnableLoggingConfiguration.java\n                    │   └── WebLogging.java\n                    ├── config\n                    │   └── LoggingBeanDefinitionRegistrar.java\n                    ├── definition\n                    │   └── ObjectMethodDefinition.java\n                    ├── exception\n                    │   └── MultiInterfaceBeansException.java\n                    ├── factory\n                    │   ├── EasyLoggingHandle.java\n                    │   ├── EasyLoggingHandleAdaptor.java\n                    │   ├── LoggingCGlibMethodInterceptor.java\n                    │   ├── LoggingFactory.java\n                    │   ├── LoggingJDKMethodInterceptor.java\n                    │   └── LoggingMethodInterceptorSupport.java\n                    ├── log\n                    │   ├── EventConstants.java\n                    │   ├── LoggingLevel.java\n                    │   ├── WebLogFactory.java\n                    │   └── adaptor\n                    │       ├── ConsoleLoggerImpl.java\n                    │       ├── DelegateLoggerImpl.java\n                    │       ├── Logger.java\n                    │       └── LoggerSupport.java\n                    └── process\n                        └── LoggingBeanPostProcessor.java\n```\n\n### 五、写在最后\n\n由于作者水平有限，欢迎各位issue，以及提新增需求\n\n### 六、视频介绍\n\n[日志中间件简介](https://www.bilibili.com/video/BV1ND4y1D7NL/)\n\n[https://www.bilibili.com/video/BV1ND4y1D7NL/](https://www.bilibili.com/video/BV1ND4y1D7NL/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhaoligang594%2Flogging-web","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzhaoligang594%2Flogging-web","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhaoligang594%2Flogging-web/lists"}