Skip to content

日志系统详解

本文档详细介绍服务端的多级日志体系,包括全局系统日志和各业务模块的专用日志。


日志架构概览

服务端采用分层日志设计

┌─────────────────────────────────────────────────────────┐
│  全局系统日志 (Insts.AddLog)                              │
│  └── 记录:系统启动、客户端连接/断开、登录认证等           │
├─────────────────────────────────────────────────────────┤
│  业务专用日志 (cLogs)                                     │
│  ├── bCalc.cls      → logs/JsonData/                    │
│  ├── bFileManage.cls → logs/FileServer/                 │
│  └── fNotify.frm    → logs/Notify/                      │
└─────────────────────────────────────────────────────────┘

全局系统日志

位置

src-server/Insts.bas

接口定义

vb
Public Sub AddLog(ByVal Msg As String, Optional Level As EnumLogLevel = LvInfo, Optional Title As String)

参数说明

参数类型默认值说明
MsgString-日志内容
LevelEnumLogLevelLvInfo日志级别
TitleString""日志标题/分类

日志级别

级别常量用途
信息LvInfo正常操作记录
警告LvWarning需要注意的非错误事件
危险LvDanger错误、异常、安全事件

输出目标

  1. 文件日志: 通过 VBMAN.Logs 写入 logs/年/月/年月日.txt
  2. 界面显示: 实时显示在 Form1.List2 列表框

使用示例

vb
AddLog "系统启动完成", LvInfo, "系统启动"
AddLog "客户端断开,当前在线: 5", LvWarning, "断开"
AddLog "认证失败: 凭证为空", LvDanger, "认证失败"

系统日志记录场景

Form1.frm — 主窗体系统事件

事件日志级别记录内容
系统启动Info"系统启动中..."、"TCP 服务已启动,端口: 800"、"数据库连接成功"、"路由注册完成"、"系统启动完成"
客户端连接Info"新客户端连接请求"、"新客户端连接,当前在线: N"
客户端断开Warning"客户端断开,当前在线: N"、"客户端断开连接: [用户名]"

mAuth.cls — 认证中间件

场景日志级别记录内容
凭证为空Danger"认证失败: 凭证为空 [用户: xxx]"
未绑定用户Danger"认证失败: 当前客户端未绑定用户"
凭证验证失败Danger"认证失败: 凭证验证失败 [用户: xxx]"

bUser.cls — 用户登录

场景日志级别记录内容
用户名不存在Warning"登录失败: 用户名不存在 [xxx]"
密码未设置Warning"登录失败: 用户密码未设置 [xxx]"
密码错误Warning"登录失败: 密码错误 [xxx]"
踢掉旧连接Warning"账号在另外一个地方登录,踢掉旧连接: xxx"
登录成功Info"用户登录成功: xxx [昵称]"

bNotify.cls — 公告查询

场景日志级别记录内容
用户获取公告Info"用户获取公告: xxx"

业务专用日志

各业务模块使用独立的 cLogs 实例,日志存储在各自的子目录中,与系统日志分离。

bCalc.cls — 计算参数日志

日志目录: logs/JsonData/

用途: 记录客户端提交的参数数据和服务端修改后的数据,用于数据核对和调试。

vb
Dim LogInst As New cLogs

Private Sub Class_Initialize()
    LogInst.LogSubDir = "JsonData"
    LogInst.HostApp App
End Sub

Public Sub Submit(Inst As cWinsock, Data As cJson)
    ' 记录客户端发来的数据
    LogInst.DataLine Data.Encode(, 2, True), "客户端发来数据"
    
    ' ... 处理数据 ...
    
    ' 记录修改后的数据
    LogInst.DataLine Data.Encode(, 2, True), "服务端修改数据"
    LogInst.Save
End Sub

记录格式: JSON 格式,带缩进便于阅读


bFileManage.cls — 文件传输日志

日志目录: logs/FileServer/

用途: 记录文件上传、下载、归档、删除等操作。

vb
Dim LogInst As New cLogs

Public Sub StartMe(ByVal Port As Long)
    ' ... 启动服务 ...
    LogInst.LogSubDir = "FileServer"
    LogInst.HostApp App
    LogInst.DataLine "文件传输服务已启动,端口: " & Port, "启动"
    LogInst.Save
End Sub

记录场景:

场景日志级别记录内容
服务启动/停止Info"文件传输服务已启动/停止,端口: xxx"
文件上传归档Info"文件已归档 [用户名]: 原文件名 -> 目标路径"
临时文件不存在Danger"错误: 临时文件不存在 [用户名]: 路径"
归档失败Danger"归档失败 [用户名]: 文件名 - 错误描述"
发送完成Info"发送完成 [用户名]: 文件名"
文件下发Info/Danger开始发送、文件不存在、发送失败等
文件删除Warning"用户删除文件 [用户名]: 文件路径"

fNotify.frm — 公告推送日志

日志目录: logs/Notify/

用途: 记录公告的推送和清空操作。

vb
Dim LogInst As New cLogs

Private Sub Form_Load()
    LogInst.LogSubDir = "Notify"
    LogInst.HostApp App
End Sub

Private Sub Command1_Click()  ' 推送按钮
    ' ... 推送公告 ...
    Dim Content As String
    Content = VBMAN.Json.Decode(VBMAN.Ini("Notify")).Encode(, 2, True)
    LogInst.DataLine(Content, "推送了新公告").Save
End Sub

Private Sub Command2_Click()  ' 清空按钮
    ' ... 清空公告 ...
    LogInst.Data("", "清空了公告", LvDanger).Save
End Sub

记录场景:

场景日志级别记录内容
推送公告Info完整的公告 JSON 内容,标题"推送了新公告"
清空公告Danger空内容,标题"清空了公告"

日志文件结构

logs/
├── 2026/
│   └── 04/
│       └── 20260430.txt          # 系统日志(全局)
├── JsonData/
│   └── 2026/
│       └── 04/
│           └── 20260430.txt      # 计算参数日志
├── FileServer/
│   └── 2026/
│       └── 04/
│           └── 20260430.txt      # 文件传输日志
└── Notify/
    └── 2026/
        └── 04/
            └── 20260430.txt      # 公告操作日志

配置说明

全局日志配置 (Form1.Form_Load)

vb
' 如果 vbman.dll 和 exe 不在同一目录,必须配置 HostApp
VBMAN.Logs.HostApp App

专用日志配置 (各业务模块)

vb
With LogInst
    .LogSubDir = "子目录名"     ' 指定日志子目录
    .HostApp App               ' 配置宿主程序
End With

最佳实践

  1. 系统级事件使用全局 AddLog,便于统一监控系统运行状态
  2. 业务数据使用专用 cLogs 实例,避免系统日志被大量业务数据淹没
  3. 敏感操作(登录失败、密码修改、文件删除等)务必记录,用于安全审计
  4. 日志级别选择:
    • LvInfo - 正常流程记录
    • LvWarning - 需要注意但非错误的事件
    • LvDanger - 错误、异常、安全风险事件

VB6及其LOGO版权为微软公司所有