# MethodLogPro **Repository Path**: hanhongweis/method-log-pro ## Basic Information - **Project Name**: MethodLogPro - **Description**: Java方法检测小工具 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-12-12 - **Last Updated**: 2025-01-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MethodLogPro ### **工具描述:基于 Spring 的方法日志与邮件通知工具** --- #### **工具简介** 该工具是一个基于 Java 的轻量级方法日志与通知工具,旨在帮助开发者记录方法的输入参数、输出结果以及执行状态。当方法执行失败时,该工具支持通过邮件异步通知相关责任人,并具备邮件失败后的队列管理和重试机制,确保通知的可靠性。 --- #### **核心功能** 1. **方法日志记录** - 通过自定义注解,自动记录方法的输入参数、返回值以及执行状态。 - 支持配置记录范围(指定某些方法或类)。 - 日志可输出到控制台、文件或日志管理系统。 2. **邮件通知** - 方法执行失败时,自动生成邮件通知并发送。 - 支持通过 Spring 的 `application.properties` 文件配置邮件发送服务(如 SMTP 服务器地址、端口、账号密码等)。 - 邮件内容包括方法名称、参数、异常信息等详细上下文,便于快速定位问题。 3. **异步邮件发送** - 基于 Spring 的 `@Async` 注解实现异步发送,避免主线程阻塞。 - 支持高并发场景,保证邮件发送的性能和效率。 4. **邮件发送失败处理** - 内置失败队列:邮件发送失败后,将失败邮件记录到内存队列中,待后续重试。 - 重试机制:使用 Spring 的定时任务扫描失败队列,定期重试邮件发送。 - 支持持久化:可选将失败邮件存储到数据库,保证系统重启后的可靠性。 5. **队列全局管理** - 使用 Spring 容器管理内存队列,确保队列的唯一性和线程安全。 - 可根据需求扩展为消息队列(如 RabbitMQ、Kafka),以满足高并发、高可靠性的需求。 6. **灵活配置** - 用户可通过 Spring 配置文件定制工具行为: - 邮箱账号信息(SMTP 服务)。 - 收件人列表。 - 邮件主题和正文模板。 - 支持设置失败重试次数上限及队列容量。 --- #### **适用场景** 1. **系统监控:** 监控关键方法的执行状态,第一时间通知异常。 2. **分布式任务调度:** 确保任务失败后可及时告警,降低故障影响。 3. **开发调试:** 自动记录方法调用日志,快速定位问题。 4. **通知系统:** 构建异步可靠的通知服务,如邮件、短信或消息推送。 --- #### **工具架构图** ```plaintext +----------------------+ +----------------------+ | 注解拦截器 |----->----> | 日志记录器 | +----------------------+ +----------------------+ | | | v v +----------------------+ +----------------------+ | 邮件服务 | | 方法调用上下文收集器 | +----------------------+ +----------------------+ | | v v +-----------------------------+ +----------------------+ | 异步任务执行器 | | 方法执行结果监听器 |---->| (基于Spring @Async) | +----------------------+ +-----------------------------+ | v +-----------------------------+ | 失败队列与重试任务 | | (基于内存队列或数据库队列) | +-----------------------------+ ``` --- #### **工具配置示例** 在 `application.properties` 文件中添加以下配置: ```properties # 邮件服务配置 spring.mail.host=smtp.example.com spring.mail.port=587 spring.mail.username=your_email@example.com spring.mail.password=your_password spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true # 通知配置 notification.mail.recipients=admin@example.com,devteam@example.com notification.mail.retry.max-attempts=3 notification.mail.queue.capacity=1000 ``` --- #### **使用示例** 1. **方法上添加注解** ```java @MethodLog public void exampleMethod(String param) { // 方法业务逻辑 if (param == null) { throw new IllegalArgumentException("Parameter cannot be null"); } } ``` 2. **自动记录日志并通知** 当方法执行失败时: - 方法日志自动记录到日志文件。 - 邮件通知相关责任人,内容包括方法名、参数、异常堆栈信息。 --- #### **优点** - **轻量级:** 基于 Spring 框架,无需额外依赖复杂组件。 - **高性能:** 异步任务与队列机制减少主线程开销。 - **可靠性:** 通过队列与重试机制,确保邮件通知的高可用性。 - **扩展性:** 灵活支持持久化、消息队列等扩展。 --- #### **未来优化方向** 1. 支持更多通知渠道,如短信、钉钉、微信等。 2. 提供统一的可视化管理界面,监控邮件发送和队列状态。 3. 集成分布式任务调度框架(如 Quartz)以支持大规模任务处理。 --- 通过该工具,开发者可以轻松实现方法执行监控与通知告警的功能,大幅提升系统的可维护性与稳定性!