日志优化

This commit is contained in:
hahwu 2026-01-20 12:14:22 +08:00
parent 1782094f92
commit 50c42e705d
8 changed files with 74 additions and 7 deletions

View File

@ -1,5 +1,5 @@
{
"AppID": 1,
"AppID": 0,
"LogLevel": "debug",
"LogPath": "./log",
"TCPAddr": ":3601",
@ -9,7 +9,7 @@
"MySqlUsr": "root",
"MySqlPwd": "IOagNEq3C84c-20CmHEin5iODVc=",
"MaxConnNum": 20000,
"DbName": "Merge_Pet_1",
"DbName": "merge_pet_1",
"HttpPort": ":8081",
"AppPath": "./app",
"TELOGDIR" : "./teLog/",

View File

@ -197,6 +197,7 @@ func HandleClientReq(args []interface{}) {
default:
p, ok := internal.Agents.Load(a)
if ok && p != G_GameLogicPtr.NotInitPlayer {
now := time.Now().UnixMilli()
p.(*Player).lock.Lock() //加锁
backup := p.(*Player).BackUp() // 备份当前的 Player 值
defer func() {
@ -217,6 +218,10 @@ func HandleClientReq(args []interface{}) {
return
}
p.(*Player).ProcessTrigger()
execTime := time.Now().UnixMilli() - now
if execTime > int64(1) {
log.Warn("uid : %d, func : %s, execTime : %d ms", p.(*Player).M_DwUin, m.GetFunc(), execTime)
}
}
}
p, b := internal.Agents.Load(a)

View File

@ -197,6 +197,7 @@ func (L *LogMgr) InitManager() {
}
func (L *LogMgr) AddLog(logs *Log) {
return
// 复制结构体和 Param map避免并发修改导致 json.Marshal 时 panic
copyLog := *logs

View File

@ -41,6 +41,12 @@ func (d *Decorate) InitData() {
if len(d.PartCost) == 0 {
d.initPartCost(d.AreaId)
}
for k := range d.PartCost {
AreaId := decorateCfg.GetAreaId(k)
if AreaId != d.AreaId {
delete(d.PartCost, k)
}
}
}
// 装饰
@ -156,9 +162,16 @@ func (d *Decorate) DecorateAll(Star int, DecorateOffIsExist bool) ([]*item.Item,
d.Progress = 0
d.FinishList = make(map[int]struct{})
}
for k := range d.PartCost {
AreaId := decorateCfg.GetAreaId(k)
if AreaId != d.AreaId {
delete(d.PartCost, k)
}
}
if len(d.PartCost) == 0 {
d.initPartCost(d.AreaId)
}
SubItems = append(SubItems, item.NewItem(item.ITEM_STAR_ID, SubItem))
return SubItems, AddItem, Num, DecorateList, Log, PetExp
}

View File

@ -1063,7 +1063,8 @@ func (p *Player) TeLog(Type string, Param map[string]interface{}) {
//Param["#zone_offset"] = -5
// 游戏内TE日志
BaseMod := p.PlayMod.getBaseMod()
go telog.Te.Track(BaseMod.Account, BaseMod.Account, Type, Param)
UidStr := GoUtil.String(p.M_DwUin)
go telog.Te.Track(BaseMod.Account, UidStr, Type, Param)
//途游GA
go ga.GAlogEvent(Type, BaseMod.Account, "", Param)
}

View File

@ -18,8 +18,8 @@ const (
releaseLevel = 1
errorLevel = 2
fatalLevel = 3
DEBUG_LEVEL = 0
warnLevel = 4
DEBUG_LEVEL = 0
)
const (
@ -27,6 +27,7 @@ const (
printReleaseLevel = "[release] "
printErrorLevel = "[error ] "
printFatalLevel = "[fatal ] "
printWarnLevel = "[warn ] "
)
type Logger struct {
@ -52,6 +53,8 @@ func New(strLevel string, pathname string, flag int) (*Logger, error) {
level = errorLevel
case "fatal":
level = fatalLevel
case "warn":
level = warnLevel
default:
return nil, errors.New("unknown level: " + strLevel)
}
@ -100,6 +103,8 @@ func NewDailyLog(now time.Time, Level int, pathname string, flag int) error {
level = errorLevel
case fatalLevel:
level = fatalLevel
case warnLevel:
level = warnLevel
default:
return fmt.Errorf("unknown level: %d", Level)
}
@ -145,6 +150,8 @@ func BindLoggerToFile(strLevel string, pathName string, flag int) (*Logger, erro
level = errorLevel
case "fatal":
level = fatalLevel
case "warn":
level = warnLevel
default:
return nil, errors.New("unknown level: " + strLevel)
}
@ -207,6 +214,9 @@ func (logger *Logger) Error(format string, a ...interface{}) {
func (logger *Logger) Fatal(format string, a ...interface{}) {
logger.doPrintf(fatalLevel, printFatalLevel, format, a...)
}
func (logger *Logger) Warn(format string, a ...interface{}) {
logger.doPrintf(warnLevel, printWarnLevel, format, a...)
}
// It's dangerous to call the method on logging
func Export(logger *Logger) {
@ -235,6 +245,15 @@ func Release(format string, a ...interface{}) {
gLogger.doPrintf(releaseLevel, printReleaseLevel, format, a...)
}
func Warn(format string, a ...interface{}) {
gloggerLock.Lock()
defer gloggerLock.Unlock()
if gLogger == nil {
return
}
gLogger.doPrintf(warnLevel, printWarnLevel, format, a...)
}
func Error(format string, a ...interface{}) {
gloggerLock.Lock()
defer gloggerLock.Unlock()

View File

@ -1,5 +1,5 @@
{
"AppID": 1,
"AppID": 0,
"LogLevel": "debug",
"LogPath": "./log",
"TCPAddr": ":3601",
@ -9,7 +9,7 @@
"MySqlUsr": "root",
"MySqlPwd": "IOagNEq3C84c-20CmHEin5iODVc=",
"MaxConnNum": 20000,
"DbName": "Merge_Pet_1",
"DbName": "merge_pet_1",
"HttpPort": ":8081",
"AppPath": "./app",
"TELOGDIR" : "./teLog/",

View File

@ -2,6 +2,7 @@ package test
import (
"server/game"
"server/pkg/github.com/name5566/leaf/log"
"testing"
)
@ -19,3 +20,30 @@ func TestFixDecorate(t *testing.T) {
DecorateMod.Progress = 22
p.FixDecorate()
}
func TestFixUserData(t *testing.T) {
log.Warn("hello world")
// type account struct {
// Account string `db:"user_name"`
// }
// var accounts []account
// err := db.SqlDb.Select(&accounts, "SELECT `user_name` FROM t_account ")
// if err != nil {
// t.Errorf("Failed to fetch accounts: %v", err)
// return
// }
// for _, acc := range accounts {
// p := new(game.Player)
// p.InitPlayer(acc.Account)
// DecorateMod := p.GetDecorateMod()
// if DecorateMod.PartCost == nil {
// continue
// }
// for k := range DecorateMod.PartCost {
// AreaId := decorateCfg.GetAreaId(k)
// if AreaId != DecorateMod.AreaId {
// fmt.Printf("Fixing account: %s, PartId: %d, OldAreaId: %d, NewAreaId: %d\n", acc.Account, k, AreaId, DecorateMod.AreaId)
// }
// }
// }
}