1
0
forked from x/icebergs

opt traceid

This commit is contained in:
IT 老营长 @云轩领航-创始人 2024-02-08 10:33:05 +08:00
parent dc9dd86bba
commit 29c1a023e3
9 changed files with 50 additions and 27 deletions

View File

@ -80,14 +80,20 @@ const (
VIEW = "view"
SHOW = "show"
)
const (
BENCH_LOG = "bench.log"
DEBUG_LOG = "debug.log"
ERROR_LOG = "error.log"
WATCH_LOG = "watch.log"
)
const LOG = "log"
var Index = &ice.Context{Name: LOG, Help: "日志模块", Configs: ice.Configs{
FILE: {Name: FILE, Help: "日志文件", Value: kit.Dict(
BENCH, kit.Dict(nfs.PATH, path.Join(ice.VAR_LOG, "bench.log"), mdb.LIST, []string{}),
DEBUG, kit.Dict(nfs.PATH, path.Join(ice.VAR_LOG, "debug.log"), mdb.LIST, []string{ice.LOG_DEBUG}),
ERROR, kit.Dict(nfs.PATH, path.Join(ice.VAR_LOG, "error.log"), mdb.LIST, []string{ice.LOG_WARN, ice.LOG_ERROR}),
WATCH, kit.Dict(nfs.PATH, path.Join(ice.VAR_LOG, "watch.log"), mdb.LIST, []string{mdb.CREATE, mdb.REMOVE, mdb.INSERT, mdb.DELETE, mdb.MODIFY, mdb.EXPORT, mdb.IMPORT}),
BENCH, kit.Dict(nfs.PATH, path.Join(ice.VAR_LOG, BENCH_LOG), mdb.LIST, []string{}),
DEBUG, kit.Dict(nfs.PATH, path.Join(ice.VAR_LOG, DEBUG_LOG), mdb.LIST, []string{ice.LOG_DEBUG}),
ERROR, kit.Dict(nfs.PATH, path.Join(ice.VAR_LOG, ERROR_LOG), mdb.LIST, []string{ice.LOG_WARN, ice.LOG_ERROR}),
WATCH, kit.Dict(nfs.PATH, path.Join(ice.VAR_LOG, WATCH_LOG), mdb.LIST, []string{mdb.CREATE, mdb.REMOVE, mdb.INSERT, mdb.DELETE, mdb.MODIFY, mdb.EXPORT, mdb.IMPORT}),
)},
VIEW: {Name: VIEW, Help: "日志格式", Value: kit.Dict(
GREEN, kit.Dict(PREFIX, "\033[32m", SUFFIX, "\033[0m", mdb.LIST, []string{ice.CTX_START, ice.LOG_CMDS}),
@ -105,23 +111,34 @@ var Index = &ice.Context{Name: LOG, Help: "日志模块", Configs: ice.Configs{
kit.For(value[mdb.LIST], func(index int, k string) { m.Conf(SHOW, kit.Keys(k, VIEW), key) })
})
}},
ice.CTX_EXIT: {Hand: func(m *ice.Message, arg ...string) { ice.Info.Save(m, TAIL) }},
ice.CTX_EXIT: {Hand: func(m *ice.Message, arg ...string) {
ice.Info.Save(m, TAIL)
}},
}}
func init() { ice.Index.Register(Index, &Frame{}, TAIL) }
func init() { ice.Info.Traceid = "short"; ice.Pulse.Option(ice.LOG_TRACEID, Traceid()) }
func init() {
ice.Info.Traceid = "short"
ice.Pulse.Option("work.id", "0")
ice.Pulse.Option("task.id", "0")
ice.Pulse.Option(ice.LOG_TRACEID, Traceid(ice.Pulse))
}
var _trace_count int64
func Traceid() (traceid string) {
func Traceid(m *ice.Message) (traceid string) {
ls := []string{}
kit.For(kit.Split(ice.Info.Traceid), func(key string) {
switch key {
case "short":
ls = append(ls, kit.Hashs(mdb.UNIQ)[:6])
if len(ls) == 0 {
ls = append(ls, kit.Hashs(mdb.UNIQ)[:6])
}
case "long":
ls = append(ls, kit.Hashs(mdb.UNIQ))
if len(ls) == 0 {
ls = append(ls, kit.Hashs(mdb.UNIQ))
}
case "node":
ls = append(ls, ice.Info.NodeName)
case "hide":

View File

@ -96,7 +96,7 @@ func (f *Frame) parse(m *ice.Message, h, line string) string {
return ""
}
msg := m.Spawn(f.target)
kit.If(h == STDIO, func() { msg.Option(ice.LOG_TRACEID, log.Traceid()) })
kit.If(h == STDIO, func() { msg.Option(ice.LOG_TRACEID, log.Traceid(m)) })
if msg.Cmdy(ls); h == STDIO && msg.IsErrNotFound() {
msg.SetResult().Cmdy(cli.SYSTEM, ls)
}

View File

@ -65,7 +65,7 @@ func _serve_main(m *ice.Message, w http.ResponseWriter, r *http.Request) bool {
r.Header.Set(ice.MSG_USERIP, strings.Split(r.RemoteAddr, nfs.DF)[0])
}
if !kit.HasPrefix(r.URL.String(), nfs.VOLCANOS, nfs.REQUIRE_MODULES, nfs.INTSHELL) {
r.Header.Set(ice.LOG_TRACEID, log.Traceid())
r.Header.Set(ice.LOG_TRACEID, log.Traceid(m))
m.Logs(r.Header.Get(ice.MSG_USERIP), r.Method, r.URL.String(), logs.TraceidMeta(r.Header.Get(ice.LOG_TRACEID)))
}
if path.Join(r.URL.Path) == nfs.PS && strings.HasPrefix(r.UserAgent(), html.Mozilla) {

View File

@ -16,7 +16,6 @@ import (
"shylinux.com/x/icebergs/base/ctx"
"shylinux.com/x/icebergs/base/gdb"
"shylinux.com/x/icebergs/base/lex"
"shylinux.com/x/icebergs/base/log"
"shylinux.com/x/icebergs/base/mdb"
"shylinux.com/x/icebergs/base/nfs"
"shylinux.com/x/icebergs/base/ssh"
@ -97,8 +96,7 @@ func _space_fork(m *ice.Message) {
}
args := kit.Simple(mdb.TYPE, m.Option(mdb.TYPE), mdb.NAME, name, mdb.TEXT, text, m.OptionSimple(mdb.TIME, nfs.MODULE, nfs.VERSION, cli.DAEMON))
args = append(args, aaa.USERNICK, m.Option(ice.MSG_USERNICK), aaa.USERNAME, m.Option(ice.MSG_USERNAME), aaa.USERROLE, m.Option(ice.MSG_USERROLE))
args = append(args, aaa.UA, m.Option(ice.MSG_USERUA), aaa.IP, m.Option(ice.MSG_USERIP))
args = _space_agent(m, args...)
args = append(args, ParseUA(m)...)
if c, e := websocket.Upgrade(m.W, m.R); !m.Warn(e) {
gdb.Go(m, func() {
defer mdb.HashCreateDeferRemove(m, args, kit.Dict(mdb.TARGET, c))()
@ -147,7 +145,7 @@ func _space_handle(m *ice.Message, safe bool, name string, c *websocket.Conn) {
source, target := kit.Simple(msg.Optionv(ice.MSG_SOURCE), name), kit.Simple(msg.Optionv(ice.MSG_TARGET))
msg.Log(tcp.RECV, "%v->%v %v %v", source, target, msg.Detailv(), msg.FormatsMeta(nil))
if next := msg.Option(ice.MSG_TARGET); next == "" || len(target) == 0 {
m.Go(func() {
msg.Go(func() {
if k := kit.Keys(msg.Option(ice.MSG_USERPOD), "_token"); msg.Option(k) != "" {
aaa.SessCheck(msg, msg.Option(k))
}
@ -160,7 +158,7 @@ func _space_handle(m *ice.Message, safe bool, name string, c *websocket.Conn) {
case (*websocket.Conn): // 转发报文
_space_echo(msg, source, target, c)
case ice.Handler: // 接收响应
m.Go(func() { c(msg) })
msg.Go(func() { c(msg) })
}
}), ice.ErrNotFound, next)
}
@ -200,7 +198,7 @@ func _space_exec(m *ice.Message, name string, source, target []string, c *websoc
kit.If(m.Optionv(ice.MSG_ARGS) != nil, func() { m.Options(ice.MSG_ARGS, kit.Simple(m.Optionv(ice.MSG_ARGS))) })
}
defer m.Cost(kit.Format("%v->%v %v %v", source, target, m.Detailv(), m.FormatSize()))
_space_echo(m.Set(ice.MSG_OPTS).Options(log.DEBUG, m.Option(log.DEBUG)), []string{}, kit.Reverse(kit.Simple(source)), c)
_space_echo(m.Set(ice.MSG_OPTS).Options(m.OptionSimple(ice.LOG_DEBUG, ice.LOG_TRACEID)), []string{}, kit.Reverse(kit.Simple(source)), c)
}
func _space_echo(m *ice.Message, source, target []string, c *websocket.Conn) {
defer func() { m.Warn(recover()) }()

View File

@ -114,7 +114,9 @@ func init() {
})
}
func FavorAction() ice.Actions { return gdb.EventsAction(FAVOR_INPUTS, FAVOR_TABLES, FAVOR_ACTION) }
func FavorAction() ice.Actions {
return gdb.EventsAction(FAVOR_INPUTS, FAVOR_TABLES, FAVOR_ACTION)
}
func FavorPreview(m *ice.Message, arg ...string) {
if kit.HasPrefixList(arg, ctx.RUN) {
if pod := arg[1]; pod != "" {

View File

@ -77,9 +77,9 @@ func init() {
})
}},
mdb.SEARCH: {Hand: func(m *ice.Message, arg ...string) {
if mdb.IsSearchPreview(m, arg) {
if mdb.IsSearchPreview(m, arg) || kit.HasPrefixList(arg, SHELL) {
kit.For([]string{shell, "/bin/ish"}, func(p string) {
m.PushSearch(mdb.TYPE, ssh.SHELL, mdb.NAME, path.Base(p), mdb.TEXT, p)
m.PushSearch(mdb.TYPE, SHELL, mdb.NAME, path.Base(p), mdb.TEXT, p)
})
}
}},
@ -88,8 +88,8 @@ func init() {
case mdb.HASH:
fallthrough
case mdb.TYPE:
m.Cmd(mdb.SEARCH, mdb.FOREACH, "", "", func(value ice.Maps) {
kit.If(value[mdb.TYPE] == ssh.SHELL, func() { m.Push(arg[0], value[mdb.TEXT]) })
m.Cmd(mdb.SEARCH, SHELL, "", "", func(value ice.Maps) {
kit.If(value[mdb.TYPE] == SHELL, func() { m.Push(arg[0], value[mdb.TEXT]) })
})
case mdb.NAME:
m.Push(arg[0], path.Base(m.Option(mdb.TYPE)), ice.Info.Hostname)

View File

@ -67,7 +67,13 @@ func (m *Message) Go(cb func(), arg ...Any) *Message {
meta := m.FormatTaskMeta()
meta.FileLine = kit.FileLine(2, 3)
kit.If(len(arg) > 0, func() { meta.FileLine = kit.Format(arg[0]) })
task.Put(meta, nil, func(task *task.Task) { m.TryCatch(true, func(m *Message) { cb() }) })
task.Put(meta, nil, func(task *task.Task) {
m.TryCatch(true, func(m *Message) {
m.Option("task.id", kit.Format(task.TaskId()))
m.Option("work.id", kit.Format(task.WorkId()))
cb()
})
})
return m
}
func (m *Message) GoWait(cb func(func()), arg ...Any) *Message {

View File

@ -318,13 +318,10 @@ func (m *Message) FileURI(dir string) string {
} else if kit.HasPrefix(dir, PS, HTTP) {
return dir
}
m.Debug("what %v", m.Option(MSG_USERPOD))
if strings.HasPrefix(dir, USR_VOLCANOS) {
return strings.TrimPrefix(dir, USR)
} else {
m.Debug("what %v", m.Option(MSG_USERPOD))
what := kit.MergeURL(path.Join(PS, REQUIRE, dir), POD, m.Option(MSG_USERPOD))
m.Debug("what %v", what)
return what
}
}

View File

@ -186,7 +186,10 @@ func (m *Message) FormatPrefix(traceid ...string) string {
}
func (m *Message) FormatShip(traceid ...string) string {
_traceid := ""
kit.If(kit.Select(m.Option(LOG_TRACEID), traceid, 0), func(traceid string) { _traceid = kit.Format("%s: %s ", logs.TRACEID, traceid) })
kit.If(kit.Select(m.Option(LOG_TRACEID), traceid, 0), func(traceid string) {
// _traceid = kit.Format("%s: %s ", logs.TRACEID, traceid+"-"+m.Option("task.id")+"-"+m.Option("work.id"))
_traceid = kit.Format("%s: %s ", logs.TRACEID, traceid)
})
return kit.Format("%s%02d %4s->%-4s", _traceid, m.code, m.source.Name, m.target.Name)
}
func (m *Message) FormatSize() string {