互联网后台服务器流水日志系统设计

本文档详细介绍了互联网后台服务器的流水日志系统设计,包括日志服务器和日志入库工具。日志服务器接收并存储json格式的日志消息,日志文件包含描述文件和数据文件。日志入库工具负责解析日志文件并写入数据库,采用定时任务和load data方式入库。整个系统确保日志的有效管理和高效处理。
摘要由CSDN通过智能技术生成

在互联网后台服务器中常需要记录互联网软件的流水日志,日志服务器和入库工具则是处理此类功能。

日志服务器会接受逻辑服务器发送的日志消息,将其写入本地日志文件。每隔一段时间,再由日志入库服务器将日志文件导入数据库。

1. 日志服务器

日志服务器接收其他服务器服务器发送的json格式日志消息,并写入到日志文件。

日志服务器不需要解析消息内容,定时批量写入日志文件。

日志文件包含日志描述文件和日志数据文件。

1.2. 日志消息

日志服务器接收其他服务器发来的消息,消息头跟一般消息一致,命令类型为服务器指定命令。

消息体为json格式,日志命令为独立命令,根据日志解析配置来填写。内容如下:

{

    "log_cmd": 1,

    "fields": {

        "uid": 10000,

        "guid": "10001",

        "nickname": "张三",

        "mac": "64-00-6A-05-3B-DD",

        "ip": "192.168.10.124",

        "login_type": "1",

        "login_time": 1447816170,

        "logout_time": 1447816270,

        "logout_type": 1,

        "online_time": 100,

        "log_time": 1447816270

    }

}

日志命令log_cmd为1,需要记录的字段在fields内。

1.3 日志描述文件

日志描述文件会记录数据记录的个数、文件的标识和版本,以及保留字段。日志文件头为以后的日志拓展和简要分析提供依据。日志描述文件的命名方式为*.fb

日志文件头格式如下:

struct LogHeader  

{  

    LogHeader() 

    {  

        memset(this, 0, sizeof(LogHeader));  

    }  

    //日志文件固定标识为: 'L', 'O', 'G', 0分别占uint32的一个字节 

    uint32 nIdent;  

    //日志文件格式版本号

    uint32 nVersion;  

    //日志文件中存储的记录数量  

    uint32 nRecordCount;  

    //保留字节  

    char sReserves[20];  

};

1.4 日志数据文件  

日志数据文件存储日志数据记录,包含数据记录头和数据记录体。日志数据文件命名方式为*.fd

日志数据记录存储格式如下:

数据记录头数据记录体数据记录头数据记录体2...

1.5 数据记录头

数据记录头包含本条日志的简要信息。消息内容变动时修改数据记录头的数据版本号。

可以一次写入多个日志消息到日志文件,以提高写入效率。在内存中以消息队列的方式来存储将要写文件的日志消息。

数据记录头格式:

struct LogDataHeader  

{  

uint16 nCmdType;//命令类型  

uint16 nDataVersion;//数据版本号

uint16 nBodySize;//数据记录体大小  

};

数据记录头初始化,例如:

struct LogDataHeader logDataHeader;

logDataHeader.nCmdType = 1;//日志表类型  

logDataHeader.nDataVersion = 1;//数据版本号

logDataHeader.nBodySize = fieldsSize;//数据记录体大小,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值