实现一个能够向本地文件写入日志的简易记录器,掌握 Go 中如何打开/创建文件、以追加方式写入文本,并附加时间戳。
os.OpenFile()
打开或创建文件time.Now()
获取当前时间fmt.Fprintf()
向文件写入格式化内容defer
关闭文件资源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("日志写入成功!")
}
[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 |
构造带时间戳的字符串 |
你可以将该程序封装为函数或模块,在多个地方复用:
func WriteLog(message string) {
...
}
也可以将日志级别(INFO、ERROR)加入输出内容:
logEntry := fmt.Sprintf("[%s] [INFO] %s\n", currentTime, logMessage)
bufio.NewWriter()
提高写入效率通过本案例,你学会了如何在 Go 中记录日志到本地文件,掌握了基本的文件操作和时间戳格式化,为构建更完善的日志系统打下基础。