利用GoAccess实现中文环境下的实时Web日志分析
package main
import (
"os"
"os/exec"
"path/filepath"
"time"
)
// 设置日志文件路径
func setLogFilePath() string {
return filepath.Join(os.TempDir(), "goaccess.log")
}
// 启动GoAccess实时分析
func startGoAccess(logFilePath string) {
cmd := exec.Command("goaccess", logFilePath, "--log-file", "--real-time-html", "-o", "-", "--date-format=iso")
cmd.Env = append(os.Environ(), "LANG=zh_CN.UTF-8")
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
_ = cmd.Start()
go func() {
_ = cmd.Wait() // 等待命令执行完成
}()
}
func main() {
logFilePath := setLogFilePath()
startGoAccess(logFilePath)
// 模拟日志生成
for {
time.Sleep(1 * time.Second)
_ = os.WriteFile(logFilePath, []byte("GET /some/path\n"), os.ModeAppend)
}
}
这段代码首先定义了日志文件的路径,然后启动了GoAccess,并设置了环境变量以支持中文显示。之后,代码模拟生成日志文件,并定期写入日志数据。GoAccess运行时会实时分析这些日志数据,并在控制台输出实时报告。
评论已关闭