73 lines
1.9 KiB
Go
73 lines
1.9 KiB
Go
package log
|
|
|
|
import (
|
|
_ "embed"
|
|
"reflect"
|
|
|
|
"apigo.cc/gojs"
|
|
"apigo.cc/gojs/goja"
|
|
"github.com/ssgo/u"
|
|
)
|
|
|
|
//go:embed log.ts
|
|
var logTS string
|
|
|
|
//go:embed README.md
|
|
var logMD string
|
|
|
|
func init() {
|
|
obj := map[string]any{
|
|
"info": func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value {
|
|
args := gojs.MakeArgs(&argsIn, vm).Check(1)
|
|
args.Logger.Info(getExceptionString(argsIn, vm), args.Map2Array(1)...)
|
|
return nil
|
|
},
|
|
"warn": func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value {
|
|
args := gojs.MakeArgs(&argsIn, vm).Check(1)
|
|
args.Logger.Warning(getExceptionString(argsIn, vm), args.Map2Array(1)...)
|
|
return nil
|
|
},
|
|
"error": func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value {
|
|
args := gojs.MakeArgs(&argsIn, vm).Check(1)
|
|
args.Logger.Error(getExceptionString(argsIn, vm), args.Map2Array(1)...)
|
|
return nil
|
|
},
|
|
"debug": func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value {
|
|
args := gojs.MakeArgs(&argsIn, vm).Check(1)
|
|
args.Logger.Debug(getExceptionString(argsIn, vm), args.Map2Array(1)...)
|
|
return nil
|
|
},
|
|
"getExceptionString": func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value {
|
|
return vm.ToValue(getExceptionString(argsIn, vm))
|
|
},
|
|
}
|
|
|
|
gojs.Register("apigo.cc/gojs/log", gojs.Module{
|
|
Object: obj,
|
|
Desc: "logger api by github.com/ssgo/log",
|
|
TsCode: logTS,
|
|
Example: logMD,
|
|
})
|
|
}
|
|
|
|
func getExceptionString(args goja.FunctionCall, vm *goja.Runtime) string {
|
|
if len(args.Arguments) == 0 {
|
|
return ""
|
|
}
|
|
if args.Argument(0).ExportType() != nil && args.Argument(0).ExportType().Kind() == reflect.Map {
|
|
ex := args.Argument(0).ToObject(vm)
|
|
message := ex.Get("message")
|
|
if message != nil {
|
|
messageStr := u.String(message.Export())
|
|
if messageStr != "" {
|
|
stack := ex.Get("stack")
|
|
if stack != nil {
|
|
messageStr += "\n" + u.String(stack.Export())
|
|
}
|
|
return messageStr
|
|
}
|
|
}
|
|
}
|
|
return u.String(args.Argument(0))
|
|
}
|