- 新增 getUserInfo 辅助函数以获取用户信息 - 更新 ServeIndex 和 ServeStatic 函数以使用数据库参数 - 修改 LogAccess 函数以记录用户信息 - 优化 AuthRequired 中间件,对登出操作进行特殊处理
47 lines
991 B
Go
47 lines
991 B
Go
package utils
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"os"
|
|
"path/filepath"
|
|
"time"
|
|
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
var Logger = logrus.New()
|
|
|
|
func InitLogger() {
|
|
if err := os.MkdirAll("log", 0755); err != nil {
|
|
panic(fmt.Sprintf("创建日志目录失败: %v", err))
|
|
}
|
|
|
|
logFileName := filepath.Join("log", time.Now().Format("2006-01-02")+".log")
|
|
logFile, err := os.OpenFile(logFileName, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
|
|
if err != nil {
|
|
panic(fmt.Sprintf("打开日志文件失败: %v", err))
|
|
}
|
|
|
|
Logger.SetFormatter(&logrus.JSONFormatter{})
|
|
Logger.SetOutput(io.MultiWriter(os.Stdout, logFile))
|
|
}
|
|
|
|
func LogAccess(ip, path, method string, userInfo map[string]interface{}) {
|
|
fields := logrus.Fields{
|
|
"ip": ip,
|
|
"path": path,
|
|
"method": method,
|
|
"timestamp": time.Now().Format(time.RFC3339),
|
|
}
|
|
|
|
// 合并用户信息到日志字段中
|
|
if userInfo != nil {
|
|
for k, v := range userInfo {
|
|
fields[k] = v
|
|
}
|
|
}
|
|
|
|
Logger.WithFields(fields).Info("Page accessed")
|
|
}
|