# sqlit集群日志库系统 **Repository Path**: xgotool/sqlite-logs-more ## Basic Information - **Project Name**: sqlit集群日志库系统 - **Description**: No description available - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-12-21 - **Last Updated**: 2024-03-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # sqlit集群日志库系统 #### 介绍 sqlit集群日志库系统,采用sqlite文件存储日志,分多环境,按日期拆分文件,使用gorm配合sqlite进行数据查询 PS:此处的插入逻辑会判断当前时间戳生成的日志id是否存在,如果存在的话会直接对id进行+1处理,直到ID不存在,再行插入,故此处不存在修改功能,使用时请注意下,若需要修改请下载 SQLITE 文件后手动修改。 支持特点: 1. 支持管道命令输入 `PS: echo 123 | sqlite-logs-more -pipe echo-bash` 2. 使用时间戳作为ID,能够快速确定搜索日期范围 3. 多日志文件拆分,使新日志不再接收影响 4. WEB监听,支持其他程序直接写入日志、可视化WEB后台管理等 5. GRPC监听,支持其他程序进行协同GRPC开发、日志记录、协同查询等 备注: > 以上示例中,| 前面的命令为正常执行的命令,后面的命令为日志记录的命令 PS:由于shell中,错误信息无法使用管道符传递,所以请手动记录错误日志,示例如下: echo 123 2>>error.log | sqlite-logs-more -pipe echo-bash #### 实现思路 1. 开启程序监听,将程序监听到HTTP端口、GRPC端口,等待日志的写入 1. 打开配置程序的Sqlite库 2. 查询今天是否存在最新的库名称,如果存在就直接打开,如果不存在就创建新的进行打开 3. 判断该日志大小,如果超过100M的话,就直接打开新的日志sqlite库,并将库名称写入到配置程序sqlite中(每次写入后都需要进行判断) 2. 将日志写入到sqlite数据库中 #### 备注 protoc程序生成: protoc --go_out=./protoc --go-grpc_out=./protoc files/app.proto 使用 github.com/glebarez/sqlite 来避免跨平台CGO导致的编译无法运行问题 编译命令: CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -o sqlite-logs-more main.go