Categorygithub.com/loudbund/go-modsynclog
module
1.0.22
Repository: https://github.com/loudbund/go-modsynclog.git
Documentation: pkg.go.dev

# README

go-modsynclog

简介

  • 本日志系统由服务端和客户端组成,服务端相当于主日志,客户端相当于从日志
  • 相关技术: golang; grpc; github.com/loudbund/go-filelog/filelog_v1; github.com/loudbund/go-socket/socket_v1

特点

  • 服务端接收日志数据,并将日志数据记录到文件系统,
    • 服务端提供sdk,供业务将写日志时调用
    • 服务端提供socket接口,供客户端端同步日志数据
  • 客户端通过socket连接服务端,并将日志同步写入到客户端文件系统

基本结构

日志汇总同步系统,共分为3部分

一. 主服务

(部署外网)

名称函数
1实例化服务modsynclog_v1.NewServer(Ip string, PortSocket, PortGRpc int, logFolder string) *Server
2直接写入日志数据server.CommitData(DataType int16, Data []byte)

用途

  1. 接收日志数据
  2. 存储日志数据
  3. 为内网终端同步日志提供服务

配置端口

  1. grpc端口(内部用):grpc方式接收日志
  2. tcp端口(外部用):内网通过这个端口同步日志到内网

配置磁盘目录

  1. 设置一个磁盘目录存储日志
  2. (存储参见 github.com/loudbund/go-filelog/filelog_v1 )
  3. 外网也可以直接解析这个日志数据加工处理
文件说明
1${date}/index索引
2${date}/data000000数据文件1
3${date}/data000001更多数据文件

二. 从服务

(部署内网)

名称函数
1实例化服务modsynclog_v1.NewClient(serverIp string, serverPort int, logFolder string, opt ...ClientOptions) *Client
2直接写入日志数据server.CommitData(DataType int16, Data []byte)

用途

  1. 作为服务端日志的从服务,
  2. 日志数据和主服务数据完全一致,可能有很短延时
  3. 终端脚本可以直接解析日志数据加工处理

配置端口

  1. 主服务提供的socket端口

配置磁盘目录

  1. 日志存储的目录
  2. (存储参见 github.com/loudbund/go-filelog/filelog_v1 )
文件说明
1${date}/index索引
2${date}/data000000数据文件1
3${date}/data000001更多数据文件
4${date}/finish日期日志结束符,无内容

三. 日志sdk(外网app使用)

app引入包,初始化日志服务地址后,直接调用包函数提交日志

使用方法

安装

go get github.com/loudbund/go-modsynclog

引入

import "github.com/loudbund/go-modsynclog/modsynclog_v1"

使用案例

程序流程日志和错误日志系统

  1. 部署服务端接收日志(参见example)
  2. 微服务引入包,调用sdk函数写入日志到服务(参见example)
  3. 内网部署客户端从服务同步日志(参见example)
  4. 内网编写消费日志并写入es脚本(消费日志数据参见github.com/loudbund/go-filelog的example)
  5. 在es里检索日志数据

其他

socket消息类型列表

CType类型方向说明
17socket_v1client->server客户端连接发送测试消息
28socket_v1server->client服务端回复测试消息
3301modsynclog_v1client->server通知接收日期变更
4302modsynclog_v1server->client日志内容消息
5303modsynclog_v1server->client服务器通知客户端日期内消息发送完成

使用示例

详见example-server/,example-client/

example说明
1example-server/example_server.go服务端示例
2example-server/logsend.go发grpc消息给服务端示例
3example-client/example_client.go从服务端示例
4example-client/scan从服务端消费日志示例

代码维护说明

  • go-modsynclog/modsynclog_v1/server.go …… 服务端主程序
  • go-modsynclog/modsynclog_v1/client.go …… 客户端主程序
  • go-modsynclog/modsynclog_v1/sdk.go …… 日志写入sdk
  • go-modsynclog/modsysclog_read_logs/read_logs.go …… 读取工具
  • go-modsynclog/example-server/ …… 服务端示例
  • go-modsynclog/example-client/ …… 客户端示例

变更历史

  • 2022-10-08 …… 客户端增加日志清理功能

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
1、使用需要先执行 NewReadLogs 函数,参数为日志文件夹 2、读取日志调用 Read(DateStart string, DataIdStart int64, CallBackData func(Date string, DataId int64, Data *filelog_v1.UDataSend, Finish bool) int) error { **** 日期日志文件夹里没有 finish标记时,日期内的日志读完后也会一直停留在这个日期里 ****.