Go语言技术文章
-
Gock 可以为同一个 HTTP 方法和路径注册多条模拟规则,并按 FIFO 顺序消费不同响应。本文用 Times(1) 组合状态码与 JSON,说明连续请求、规则耗尽、未匹配判断和清理边界。412 收藏 -
自定义http.Client需要在请求前安装Gock拦截器。本文给出无真实网络回退的完整Go测试示例,说明实例接线、请求匹配、RestoreClient恢复与全局模拟清理的不同职责。303 收藏 -
Go Testify 用 mock.Call.Run 接收 Arguments,在回调中取出并修改指针参数;本文区分 Run 与 Return,说明类型匹配、nil 防护和值参数边界。297 收藏 -
用 Gock 为指定主机注册 HTTP mock,说明主机匹配、客户端拦截、未匹配请求策略和测试清理边界。252 收藏 -
Go Testify 的 mock.InOrder 可以把多个 *mock.Call 组合成相对顺序约束。本文用准备、保存、审计的测试场景说明如何保留参数、调用次数与 AssertExpectations,并划清组外调用和并发流程不应强行绑定的边界。143 收藏 -
Go Testify 的 mock 期望遇到复杂请求结构体时,不必比较全部字段。本文用 MatchedBy 只匹配用户编号、动作等业务关键字段,并拆解值类型、指针、nil 与函数签名边界。264 收藏 -
Lumberjack主动轮转成功后,原日志器可以继续通过同一实例写入新活动文件。本文提供完整Go示例,说明对象与句柄关系、并发协调、上层缓冲、轮转失败和后台归档的边界。353 收藏 -
Go Lumberjack 用 MaxBackups 限制历史日志份数、用 MaxAge 按轮转时间限制保留天数;本文给出组合配置、清理时机和容量估算边界。390 收藏 -
用 Go Lumberjack v2 的 MaxSize 按文件大小触发日志轮转,并梳理 MaxBackups、MaxAge、Compress 与单进程写入边界。300 收藏 -
用Zap的两个Core和互斥等级条件,将Info、Warn写入app.log,Error及以上写入error.log。提供完整初始化代码,说明内部错误出口、文件同步关闭与轮转限制。213 收藏 -
介绍 Go Zap 如何使用 AtomicLevel 在运行期动态调整日志最低等级,涵盖 Core 接入、SetLevel、文本解析、子 Logger 共享和生产权限边界。433 收藏 -
Go Zap 的 zap.Object 适合把一个自定义对象作为嵌套结构写入日志。本文从 ObjectMarshaler 和 zapcore.ObjectEncoder 的职责开始,给出请求元数据的原创实现,说明字段命名、错误返回、指针接收者和敏感信息边界。380 收藏 -
Go Zerolog 自带 level 字段,但接入统一日志平台时,业务常常还需要 severity 等固定字段。本文从字段不一致的排查场景出发,说明如何用 Hook.Run 读取 zerolog.Level,统一补充 severity,处理 NoLevel、全局 logger、局部 logger 和字段覆盖边界。475 收藏 -
fsnotify的一次保存可能产生多次通知。本文用单文件监听示例说明父目录过滤、静默窗口和单循环定时器,给出完整Go代码,并解释持续写入、慢处理、读取失败和通知丢失的限制。280 收藏 -
Zerolog 可以通过 Logger.With 创建带固定业务字段的子日志器。本文用 service、component 与 request_id 区分不同生命周期,说明怎样绑定、注入和复查字段边界,避免共享日志器被动态字段污染。316 收藏