123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- package logs
- import (
- "bp.jydev.jianyu360.cn/BaseService/gateway/common/db"
- "bp.jydev.jianyu360.cn/BaseService/gateway/core/router"
- "encoding/json"
- "github.com/gogf/gf/v2/net/ghttp"
- "log"
- "strings"
- "sync"
- "time"
- )
- var (
- arr = []map[string]interface{}{}
- //对map的同步
- lock = &sync.Mutex{}
- )
- //SaveLogTask 定时保存日志
- func (s *serverLog) SaveLogTask() {
- lock.Lock()
- if len(arr) >= 1 {
- tmp := arr
- arr = make([]map[string]interface{}, 0)
- go func() {
- log.Println("timer..save..visit..log", len(tmp))
- db.MgoLog.SaveBulk("jy_logs", tmp...)
- }()
- }
- lock.Unlock()
- time.AfterFunc(5*time.Minute, s.SaveLogTask)
- }
- // saveLogToDb 日志存库
- func (s *serverLog) saveLogToDb(ctx *router.GContext, r *ghttp.Request) {
- md, _ := json.Marshal(r.Request.Form)
- m := map[string]interface{}{
- "ip": r.GetClientIp(),
- "refer": r.Referer(),
- "mdescribe": string(md),
- "client": r.UserAgent(),
- "os": getOS(r.UserAgent()),
- "browse": getBrowse(r.UserAgent()),
- "method": r.Method,
- "url": r.URL.String(),
- }
- if ctx.Sess != nil {
- if ctx.Sess.UserId != "" {
- m["userid"] = ctx.Sess.UserId
- }
- if ctx.Sess.NewUid != 0 {
- m["userid_new"] = ctx.Sess.NewUid
- }
- if ctx.Sess.EntId != 0 {
- m["userid"] = ctx.Sess.EntId
- }
- }
- timeNow := time.Now()
- m["date"] = timeNow.Unix()
- m["year"] = timeNow.Year()
- m["month"] = timeNow.Month()
- m["day"] = timeNow.Day()
- m["hour"] = timeNow.Hour()
- m["minutes"] = timeNow.Minute()
- lock.Lock()
- arr = append(arr, m)
- if len(arr) >= 500 {
- tmp := arr
- arr = make([]map[string]interface{}, 0)
- go func() {
- log.Println("save..visit..log", len(tmp), db.MgoLog.SaveBulk("jy_gateway_logs", tmp...))
- }()
- }
- lock.Unlock()
- }
- // getOS 获取平台类型
- func getOS(useros string) string {
- osVersion := "其他"
- if strings.Contains(useros, "NT 6.0") {
- osVersion = "Windows Vista/Server 2008"
- } else if strings.Contains(useros, "NT 5.2") {
- osVersion = "Windows Server 2003"
- } else if strings.Contains(useros, "NT 5.1") {
- osVersion = "Windows XP"
- } else if strings.Contains(useros, "NT 5") {
- osVersion = "Windows 2000"
- } else if strings.Contains(useros, "Mac") {
- osVersion = "Mac"
- } else if strings.Contains(useros, "Unix") {
- osVersion = "UNIX"
- } else if strings.Contains(useros, "Linux") {
- osVersion = "Linux"
- } else if strings.Contains(useros, "SunOS") {
- osVersion = "SunOS"
- } else if strings.Contains(useros, "NT 6.3") {
- osVersion = "Window8"
- } else if strings.Contains(useros, "NT 6.1") {
- osVersion = "Window7"
- } else if strings.Contains(useros, "NT 10.0") {
- osVersion = "Window10"
- }
- return osVersion
- }
- // getBrowse 获取浏览器类型
- func getBrowse(userbrowser string) string {
- browserVersion := "其他"
- if strings.Contains(userbrowser, "MSIE") {
- browserVersion = "IE"
- } else if strings.Contains(userbrowser, "Firefox") {
- browserVersion = "Firefox"
- } else if strings.Contains(userbrowser, "Chrome") {
- browserVersion = "Chrome"
- } else if strings.Contains(userbrowser, "Safari") {
- browserVersion = "Safari"
- } else if strings.Contains(userbrowser, "rv:11.0") {
- browserVersion = "IE11"
- }
- return browserVersion
- }
|