123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- // Copyright 2025 BackendServerTemplate Authors. All rights reserved.
- // Use of this source code is governed by a MIT-style
- // license that can be found in the LICENSE file.
- package logformat
- import (
- "github.com/SongZihuan/BackendServerTemplate/src/global"
- "github.com/SongZihuan/BackendServerTemplate/src/logger/loglevel"
- "github.com/SongZihuan/BackendServerTemplate/src/utils/osutils"
- "os"
- "os/user"
- "strings"
- "time"
- )
- type LogData struct {
- LogLevel loglevel.LoggerLevel `json:"-"`
- Level string `json:"level"`
- Now time.Time `json:"-"`
- Date string `json:"date"`
- Zone string `json:"zone"`
- Timestamp int64 `json:"timestamp"`
- Exec string `json:"exec"`
- Name string `json:"name"`
- Version string `json:"version"`
- User *user.User `json:"-"`
- Uid string `json:"uid"`
- Gid string `json:"gid"`
- UserName string `json:"username"`
- WorkDirectory string `json:"work-directory"`
- Pid int `json:"pid"`
- ParentPid int `json:"ppid"`
- Msg string `json:"msg"`
- }
- func GetLogData(level loglevel.LoggerLevel, msg string, now time.Time) *LogData {
- var res = new(LogData)
- now = now.In(global.Location)
- res.LogLevel = level
- res.Level = strings.ToUpper(string(level))
- res.Now = now
- res.Date = now.Format(time.DateTime)
- res.Zone = global.Location.String()
- res.Timestamp = now.Unix()
- res.Name = global.Name
- res.Version = global.Version
- u := getUser()
- if u != nil {
- res.User = u
- res.Uid = u.Uid
- res.Gid = u.Gid
- res.UserName = getUserName(u)
- } else {
- res.User = nil
- res.Uid = ""
- res.Gid = ""
- res.UserName = ""
- }
- wd := getWorkDir()
- if wd != "" {
- res.WorkDirectory = wd
- } else {
- res.WorkDirectory = ""
- }
- res.Pid = os.Getpid()
- res.ParentPid = os.Getppid()
- res.Exec = osutils.GetArgs0Name()
- res.Msg = strings.Replace(msg, "\"", "'", -1)
- return res
- }
- func getUserName(u *user.User) (name string) {
- if name = u.Name; name != "" {
- return name
- }
- if name = u.Username; name != "" {
- return name
- }
- return "-"
- }
- func getUser() *user.User {
- currentUser, err := user.Current()
- if err != nil {
- return nil
- }
- return currentUser
- }
- func getWorkDir() string {
- dir, err := os.Getwd()
- if err != nil {
- return "未知"
- }
- return dir
- }
|