225 lines
6.2 KiB
Go
225 lines
6.2 KiB
Go
|
|
package log
|
||
|
|
|
||
|
|
// type RequestLog struct {
|
||
|
|
// BaseLog
|
||
|
|
// ServerId string `log:"pos:6"`
|
||
|
|
// App string `log:"pos:7"`
|
||
|
|
// Node string `log:"pos:8"`
|
||
|
|
// ClientIp string `log:"pos:9"`
|
||
|
|
// FromApp string `log:"pos:10"`
|
||
|
|
// FromNode string `log:"pos:11"`
|
||
|
|
// UserId string `log:"pos:12"`
|
||
|
|
// DeviceId string `log:"pos:13"`
|
||
|
|
// ClientAppName string `log:"pos:14"`
|
||
|
|
// ClientAppVersion string `log:"pos:15"`
|
||
|
|
// SessionId string `log:"pos:16"`
|
||
|
|
// RequestId string `log:"pos:17"`
|
||
|
|
// Host string `log:"pos:18"`
|
||
|
|
// Scheme string `log:"pos:19"`
|
||
|
|
// Proto string `log:"pos:20"`
|
||
|
|
// AuthLevel int `log:"pos:21"`
|
||
|
|
// Priority int `log:"pos:22"`
|
||
|
|
// Method string `log:"pos:23"`
|
||
|
|
// Path string `log:"pos:24"`
|
||
|
|
// RequestHeaders map[string]string `log:"pos:25"`
|
||
|
|
// RequestData map[string]any `log:"pos:26"`
|
||
|
|
// UsedTime float32 `log:"pos:27"`
|
||
|
|
// ResponseCode int `log:"pos:28"`
|
||
|
|
// ResponseHeaders map[string]string `log:"pos:29"`
|
||
|
|
// ResponseDataLength uint `log:"pos:30"`
|
||
|
|
// ResponseData string `log:"pos:31"`
|
||
|
|
// }
|
||
|
|
|
||
|
|
// func (l *RequestLog) Reset() {
|
||
|
|
// l.BaseLog.Reset()
|
||
|
|
// l.ServerId = ""
|
||
|
|
// l.App = ""
|
||
|
|
// l.Node = ""
|
||
|
|
// l.ClientIp = ""
|
||
|
|
// l.FromApp = ""
|
||
|
|
// l.FromNode = ""
|
||
|
|
// l.UserId = ""
|
||
|
|
// l.DeviceId = ""
|
||
|
|
// l.ClientAppName = ""
|
||
|
|
// l.ClientAppVersion = ""
|
||
|
|
// l.SessionId = ""
|
||
|
|
// l.RequestId = ""
|
||
|
|
// l.Host = ""
|
||
|
|
// l.Scheme = ""
|
||
|
|
// l.Proto = ""
|
||
|
|
// l.AuthLevel = 0
|
||
|
|
// l.Priority = 0
|
||
|
|
// l.Method = ""
|
||
|
|
// l.Path = ""
|
||
|
|
// if l.RequestHeaders == nil {
|
||
|
|
// l.RequestHeaders = make(map[string]string, 8)
|
||
|
|
// } else {
|
||
|
|
// clear(l.RequestHeaders)
|
||
|
|
// }
|
||
|
|
// if l.RequestData == nil {
|
||
|
|
// l.RequestData = make(map[string]any, 8)
|
||
|
|
// } else {
|
||
|
|
// clear(l.RequestData)
|
||
|
|
// }
|
||
|
|
// l.UsedTime = 0
|
||
|
|
// l.ResponseCode = 0
|
||
|
|
// if l.ResponseHeaders == nil {
|
||
|
|
// l.ResponseHeaders = make(map[string]string, 8)
|
||
|
|
// } else {
|
||
|
|
// clear(l.ResponseHeaders)
|
||
|
|
// }
|
||
|
|
// l.ResponseDataLength = 0
|
||
|
|
// l.ResponseData = ""
|
||
|
|
// }
|
||
|
|
|
||
|
|
// func (logger *Logger) Request(
|
||
|
|
// method, path, host, scheme, proto string,
|
||
|
|
// clientIp, serverId, app, node string,
|
||
|
|
// fromApp, fromNode string,
|
||
|
|
// userId, deviceId, sessionId, requestId string,
|
||
|
|
// clientAppName, clientAppVersion string,
|
||
|
|
// authLevel, priority int,
|
||
|
|
// reqHeaders map[string]string,
|
||
|
|
// reqData map[string]any,
|
||
|
|
// responseCode int,
|
||
|
|
// usedTime float32,
|
||
|
|
// respHeaders map[string]string,
|
||
|
|
// responseData string,
|
||
|
|
// responseDataLength uint,
|
||
|
|
// extra ...any,
|
||
|
|
// ) {
|
||
|
|
// if !logger.CheckLevel(INFO) {
|
||
|
|
// return
|
||
|
|
// }
|
||
|
|
|
||
|
|
// entry := GetEntry[RequestLog]()
|
||
|
|
// logger.FillBase(&entry.BaseLog, LogTypeRequest)
|
||
|
|
|
||
|
|
// // 暴力平铺赋值,性能极高
|
||
|
|
// entry.Method = method
|
||
|
|
// entry.Path = path
|
||
|
|
// entry.Host = host
|
||
|
|
// entry.Scheme = scheme
|
||
|
|
// entry.Proto = proto
|
||
|
|
// entry.ClientIp = clientIp
|
||
|
|
// entry.ServerId = serverId
|
||
|
|
// entry.App = app
|
||
|
|
// entry.Node = node
|
||
|
|
// entry.FromApp = fromApp
|
||
|
|
// entry.FromNode = fromNode
|
||
|
|
// entry.UserId = userId
|
||
|
|
// entry.DeviceId = deviceId
|
||
|
|
// entry.SessionId = sessionId
|
||
|
|
// entry.RequestId = requestId
|
||
|
|
// entry.ClientAppName = clientAppName
|
||
|
|
// entry.ClientAppVersion = clientAppVersion
|
||
|
|
// entry.AuthLevel = authLevel
|
||
|
|
// entry.Priority = priority
|
||
|
|
// entry.RequestHeaders = reqHeaders
|
||
|
|
// entry.RequestData = reqData
|
||
|
|
// entry.ResponseCode = responseCode
|
||
|
|
// entry.UsedTime = usedTime
|
||
|
|
// entry.ResponseHeaders = respHeaders
|
||
|
|
// entry.ResponseData = responseData
|
||
|
|
// entry.ResponseDataLength = responseDataLength
|
||
|
|
// if len(extra) > 0 {
|
||
|
|
// cast.FillMap(&entry.Extra, extra)
|
||
|
|
// }
|
||
|
|
|
||
|
|
// logger.Log(entry)
|
||
|
|
// }
|
||
|
|
|
||
|
|
// type TaskLog struct {
|
||
|
|
// BaseLog
|
||
|
|
// Task string `log:"pos:6"`
|
||
|
|
// UsedTime float32 `log:"pos:7"`
|
||
|
|
// Success bool `log:"pos:8"`
|
||
|
|
// Message string `log:"pos:9"`
|
||
|
|
// }
|
||
|
|
|
||
|
|
// func (l *TaskLog) Reset() {
|
||
|
|
// l.BaseLog.Reset()
|
||
|
|
// l.Task = ""
|
||
|
|
// l.UsedTime = 0
|
||
|
|
// l.Success = false
|
||
|
|
// l.Message = ""
|
||
|
|
// }
|
||
|
|
|
||
|
|
// type MonitorLog struct {
|
||
|
|
// BaseLog
|
||
|
|
// Target string `log:"pos:6"`
|
||
|
|
// Status int `log:"pos:7"`
|
||
|
|
// Message string `log:"pos:8"`
|
||
|
|
// }
|
||
|
|
|
||
|
|
// func (l *MonitorLog) Reset() {
|
||
|
|
// l.BaseLog.Reset()
|
||
|
|
// l.Target = ""
|
||
|
|
// l.Status = 0
|
||
|
|
// l.Message = ""
|
||
|
|
// }
|
||
|
|
|
||
|
|
// type StatisticLog struct {
|
||
|
|
// BaseLog
|
||
|
|
// Category string `log:"pos:6"`
|
||
|
|
// Item string `log:"pos:7"`
|
||
|
|
// Value float64 `log:"pos:8"`
|
||
|
|
// }
|
||
|
|
|
||
|
|
// func (l *StatisticLog) Reset() {
|
||
|
|
// l.BaseLog.Reset()
|
||
|
|
// l.Category = ""
|
||
|
|
// l.Item = ""
|
||
|
|
// l.Value = 0
|
||
|
|
// }
|
||
|
|
|
||
|
|
// func (logger *Logger) Task(taskName string, usedTime float32, success bool, message string, extra ...any) {
|
||
|
|
// if logger.CheckLevel(INFO) {
|
||
|
|
// entry := GetEntry[TaskLog]()
|
||
|
|
// logger.FillBase(&entry.BaseLog, LogTypeTask)
|
||
|
|
// entry.Task = taskName
|
||
|
|
// entry.UsedTime = usedTime
|
||
|
|
// entry.Success = success
|
||
|
|
// entry.Message = message
|
||
|
|
// if len(extra) > 0 {
|
||
|
|
// cast.FillMap(&entry.Extra, extra)
|
||
|
|
// }
|
||
|
|
// logger.Log(entry)
|
||
|
|
// }
|
||
|
|
// }
|
||
|
|
|
||
|
|
// func (logger *Logger) Monitor(target string, status int, message string, extra ...any) {
|
||
|
|
// if logger.CheckLevel(INFO) {
|
||
|
|
// entry := GetEntry[MonitorLog]()
|
||
|
|
// logger.FillBase(&entry.BaseLog, LogTypeMonitor)
|
||
|
|
// entry.Target = target
|
||
|
|
// entry.Status = status
|
||
|
|
// entry.Message = message
|
||
|
|
// if len(extra) > 0 {
|
||
|
|
// cast.FillMap(&entry.Extra, extra)
|
||
|
|
// }
|
||
|
|
// logger.Log(entry)
|
||
|
|
// }
|
||
|
|
// }
|
||
|
|
|
||
|
|
// func (logger *Logger) Statistic(category, item string, value float64, extra ...any) {
|
||
|
|
// if logger.CheckLevel(INFO) {
|
||
|
|
// entry := GetEntry[StatisticLog]()
|
||
|
|
// logger.FillBase(&entry.BaseLog, LogTypeStatistic)
|
||
|
|
// entry.Category = category
|
||
|
|
// entry.Item = item
|
||
|
|
// entry.Value = value
|
||
|
|
// if len(extra) > 0 {
|
||
|
|
// cast.FillMap(&entry.Extra, extra)
|
||
|
|
// }
|
||
|
|
// logger.Log(entry)
|
||
|
|
// }
|
||
|
|
// }
|
||
|
|
|
||
|
|
// func init() {
|
||
|
|
// RegisterType(LogTypeRequest, &RequestLog{})
|
||
|
|
// RegisterType(LogTypeTask, &TaskLog{})
|
||
|
|
// RegisterType(LogTypeMonitor, &MonitorLog{})
|
||
|
|
// RegisterType(LogTypeStatistic, &StatisticLog{})
|
||
|
|
// }
|