Go语言实战案例-简易日志记录器

🎯 案例目标

实现一个能够向本地文件写入日志的简易记录器,掌握 Go 中如何打开/创建文件、以追加方式写入文本,并附加时间戳。


🧩 应用场景

  • • 日志记录系统运行状态或用户行为
  • • 错误日志追踪
  • • 服务器输出日志写入本地文件

🧠 涉及知识点

  • • 使用 os.OpenFile() 打开或创建文件
  • • 使用 time.Now() 获取当前时间
  • • 使用 fmt.Fprintf() 向文件写入格式化内容
  • • 使用 defer 关闭文件资源

💻 示例代码

go 复制代码
package main

import (
    "fmt"
    "os"
    "time"
)

func main() {
    // 定义日志内容
    logMessage := "用户登录成功"

    // 获取当前时间
    currentTime := time.Now().Format("2006-01-02 15:04:05")

    // 打开或创建文件,追加写入权限
    file, err := os.OpenFile("app.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
    if err != nil {
        fmt.Println("无法打开日志文件:", err)
        return
    }
    defer file.Close()

    // 写入日志内容,带时间戳
    logEntry := fmt.Sprintf("[%s] %s\n", currentTime, logMessage)
    if _, err := file.WriteString(logEntry); err != nil {
        fmt.Println("写入日志失败:", err)
        return
    }

    fmt.Println("日志写入成功!")
}

📂 写入结果示例(app.log)

csharp 复制代码
[2025-07-18 10:21:33] 用户登录成功
[2025-07-18 10:25:12] 用户点击按钮

🛠 技术说明

函数/库 作用
os.OpenFile 打开或创建文件
os.O_APPEND 追加写入
os.O_CREATE 文件不存在时创建
time.Now().Format(...) 获取并格式化当前时间
fmt.Sprintf 构造带时间戳的字符串

🧪 进阶用法

你可以将该程序封装为函数或模块,在多个地方复用:

go 复制代码
func WriteLog(message string) {
    ...
}

也可以将日志级别(INFO、ERROR)加入输出内容:

perl 复制代码
logEntry := fmt.Sprintf("[%s] [INFO] %s\n", currentTime, logMessage)

📌 拓展练习

  • • 将日志写入不同文件夹,根据日期切分日志
  • • 设置最大文件大小,自动切割日志
  • • 支持按日志等级过滤输出
  • • 使用 bufio.NewWriter() 提高写入效率

✅ 小结

通过本案例,你学会了如何在 Go 中记录日志到本地文件,掌握了基本的文件操作和时间戳格式化,为构建更完善的日志系统打下基础。

相关推荐
颜酱19 分钟前
# 02 | 搭骨架:用 LangGraph 编排 12 步工作流(思路)
前端·人工智能·后端
颜酱20 分钟前
02 | 搭骨架:用 LangGraph 编排 12 步工作流
前端·人工智能·后端
嘉伟桑1 小时前
Python调用电价API返回JSON示例:分时电价、现货电价和字段解析
后端
武子康2 小时前
Shippy:确定性工具、会话级 Sandbox 与 Live-Data Eval(4 类收敛 + 7 步实现方案 + 6 类评测指标)
前端·人工智能·后端
我叫黑大帅2 小时前
我为什么单一消费者的场景下,要用 Redis List 当消息队列?
redis·后端·面试
AskHarries2 小时前
文件上传系统
后端
止语Lab3 小时前
好的 DX 不等于少写代码——三种语言的摩擦力设计课
后端
吃饱了得干活3 小时前
别再手动解析 LLM 输出了!LangChain 四种结构化输出方案对比
后端·python·langchain
fcu3dx3 小时前
Go + PostgreSQL 餐饮SaaS后端架构:从单体到多租户的实战重构
go
程序员天天困3 小时前
Arthas trace 命令怎么用?一行定位最慢那行代码
jvm·后端