# ed-common-log-parent
**Repository Path**: edynasty/ed-common-log-parent
## Basic Information
- **Project Name**: ed-common-log-parent
- **Description**: EdCommonLog 是一个基于 Spring Boot 的统一日志框架,旨在简化日志处理的集成与管理。它由多个模块组成,支持多种日志记录方式,包括基于 Logback、Kafka 、db等的日志服务。
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: 0.0.x
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2025-04-03
- **Last Updated**: 2025-04-03
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ed-common-log-parent
EdCommonLog 是一个基于 Spring Boot 的统一日志框架,旨在简化日志处理的集成与管理。它由多个模块组成,支持多种日志记录方式,包括基于
Logback、Kafka 等的日志服务。
## 项目模块
此项目包含以下几个模块:
- **ed-common-log-parent**: 父级模块,定义了全局的依赖和插件配置。
- **ed-common-log-core**: 核心模块,包含基础日志服务、日志类型、事件模型及其他日志管理功能。
- **ed-common-log-logger**: 提供基础日志记录功能,主要实现日志的记录和管理。
- **ed-common-log-logger-starter**: 为 Spring Boot 提供自动化配置,用于快速集成日志记录功能。
- **ed-common-log-kafka**: 集成 Kafka 作为日志的传输工具,支持将日志发送到 Kafka。
- **ed-common-log-kafka-starter**: 为 Spring Boot 提供 Kafka 日志传输功能的自动化配置。
- **ed-common-log-autoconfigure**: 自动配置模块,简化日志相关服务的配置。
## 快速开始
### 1. 添加依赖
你可以通过以下依赖来集成 EdCommonLog 模块到你的 Spring Boot 项目中。
#### 在 `pom.xml` 中添加父级依赖
```xml
io.github.edynasty
ed-cloud-parent
0.0.8
```
#### 在子模块中引入需要的日志模块
例如,引入核心日志模块和 logger 支持模块:
```xml
io.github.edynasty
ed-common-logger-start
0.0.8
```
### 2. 配置日志
在 application.properties 或 application.yml 中添加日志配置。
例如,配置 logger 日志:
```yaml
ed:
log:
enabled: true
log-type: LOGGER
logger-format: JSON
```
### 3. 使用日志
在代码中使用 @EdLog 注解来记录日志。
- `title`: 日志标题。无值时默认取`@ApiOperation`或`@Operation`注解值。
- `type`: 日志类型。默认为`OTHER`,用于区分不同类型的日志。
- `key`: 日志关键字。默认为空,使用`spel`表达式获取参数中的关键信息。
- `needArgs`: 是否需要记录参数。默认为`false`。
- `needResult`: 是否需要记录返回结果。默认为`false`。
- `needErrorMsg`: 是否需要记录异常信息。默认为`false`。
- `serializableHandler`: 序列化处理器。默认为`DefaultLogArgsSerializableHandler`。用于序列化参数、返回结果和异常信息。
```java
import io.github.edynasty.common.log.core.annotation.EdLog;
@Service
public class MyService {
@ApiOperation(title = "自定义日志")
@EdLog(title = "自定义日志", type = "INFO", key = "#id", needArgs = true, needResult = true, needErrorMsg = true, serializableHandler = DefaultLogArgsSerializableHandler.class)
public void performAction(Long id, String name) {
// your logic here
}
}
```
## 模块说明
### `ed-common-log-core`
核心模块,包含基础日志功能、事件模型和日志配置。
- `EdLog`: 日志注解,用于标记需要记录日志的方法。
- `EdLogAspect`: 切面,用于拦截日志记录的方法。
- `EdLogListenerContext`: 日志监听器上下文。储存全部的日志监听器。
- `SysLoggerContext`: 系统日志记录器上下文。栈式存储系统日志记录器。
- `BaseLogUserHandler`: 用于获取当前用户信息。
- `BaseLogArgsSerializableHandler`: 序列化日志参数接口。
- `DefaultLogArgsSerializableHandler`: 默认的序列化处理器。
- `EdLogEventListener`: 日志事件监听器。如异常后发送消息通知。
- `EdLogEvent`: 定义日志事件。
- `SysLogger`: 系统日志记录器。
- `BaseLogService`: 提供基础日志服务接口。
### `ed-common-log-db`
`Mybatis-plus`集成模块,将日志保存到数据库中。
`DbLogServiceImpl`: 实现基于数据库的日志服务。
`EdSysLog`: 系统日志实体类。
`EdSysLogDetail`: 系统日志详情实体类。
`EdSysLogService`: 系统日志服务接口。
`EdSysLogServiceImpl`: 系统日志服务实现类。
`EdSysLogDetailService`: 系统日志详情服务接口。
`EdSysLogDetailServiceImpl`: 系统日志详情服务实现类。
可以通过实现`EdSysLogService`和`EdSysLogDetailService`接口来自定义日志`service`覆盖默认的`Service Bean`。
请先执行`docs/db`模块下的`sql`文件,初始化数据库表。
### `ed-common-log-logger`
日志记录模块,提供了基于 Logback 的日志服务。
`LoggerLogServiceImpl`: 实现日志记录服务。
具体实现见: [ELK详解](docs/ELK详解.md)
### `ed-common-log-kafka`
`Kafka` 集成模块,将日志通过 `Kafka` 发送到指定的日志中心。
`KafkaLogServiceImpl`: 实现基于 `Kafka` 的日志服务。
### `ed-common-log-autoconfigure`
自动配置模块,简化日志服务的集成。该模块会自动配置必要的日志服务并进行初始化。
`EdLogAutoConfigure`: 日志自动配置类。
`EdLogLogbackInitializer`: 初始化 Logback 配置。
## 许可证信息
该项目采用 Apache Software License 2.0 许可证,您可以自由使用、修改和分发本项目。有关详细信息,请参阅 Apache License 2.0。
## 贡献
欢迎提交 Pull Request 来修复问题或增强功能。