123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- package ngjsvm
- import (
- "errors"
- "git.swzry.com/zry/GoHiedaLogger/hiedalog"
- "github.com/dop251/goja"
- )
- type JSRtLoggerLogLevel uint
- const (
- JSRrLoggerLogLevelDebug JSRtLoggerLogLevel = iota
- JSRrLoggerLogLevelTrace JSRtLoggerLogLevel = iota
- JSRrLoggerLogLevelInfo JSRtLoggerLogLevel = iota
- JSRrLoggerLogLevelWarn JSRtLoggerLogLevel = iota
- JSRrLoggerLogLevelError JSRtLoggerLogLevel = iota
- )
- func (l JSRtLoggerLogLevel) MapToHiedaLogLevel() string {
- switch l {
- case JSRrLoggerLogLevelError:
- return hiedalog.DLN_ERROR
- case JSRrLoggerLogLevelWarn:
- return hiedalog.DLN_WARN
- case JSRrLoggerLogLevelInfo:
- return hiedalog.DLN_INFO
- case JSRrLoggerLogLevelTrace:
- return hiedalog.DLN_VERBOSE
- default:
- return hiedalog.DLN_DEBUG
- }
- }
- var Err_JsRtLogger_NoLogFuncSpecified = errors.New("no log func specified")
- type JSRtLoggerLogFunc func(level JSRtLoggerLogLevel, info []goja.Value)
- func JSRtLoggerLogFuncFromHiedaLogger(logger *hiedalog.HiedaLogger, moduleName string) JSRtLoggerLogFunc {
- return func(level JSRtLoggerLogLevel, info []goja.Value) {
- a := make([]interface{}, len(info))
- for i, v := range info {
- if v == nil {
- a[i] = "null"
- } else {
- a[i] = v.ToString()
- }
- }
- logger.LogPrint(moduleName, level.MapToHiedaLogLevel(), a...)
- }
- }
- type JSRtLogger struct {
- isReg bool
- env *JSEnv
- LogFunc JSRtLoggerLogFunc
- }
- func (j *JSRtLogger) Dispose() {
- }
- func (j *JSRtLogger) RegisterRt(name string, env *JSEnv) (goja.Value, error) {
- j.env = env
- if j.LogFunc == nil {
- return nil, Err_JsRtLogger_NoLogFuncSpecified
- }
- fmap := map[string]interface{}{
- "error": j.J_error,
- "warn": j.J_warn,
- "log": j.J_info,
- "info": j.J_info,
- "trace": j.J_trace,
- "debug": j.J_debug,
- }
- obj := j.env.BuildObject(name, fmap)
- j.isReg = true
- return obj, nil
- }
- func (j *JSRtLogger) IsRegistered() bool {
- return j.isReg
- }
- func (j *JSRtLogger) J_debug(call goja.FunctionCall) goja.Value {
- if !j.isReg {
- return goja.Undefined()
- }
- j.LogFunc(JSRrLoggerLogLevelDebug, call.Arguments)
- return goja.Undefined()
- }
- func (j *JSRtLogger) J_trace(call goja.FunctionCall) goja.Value {
- if !j.isReg {
- return goja.Undefined()
- }
- j.LogFunc(JSRrLoggerLogLevelTrace, call.Arguments)
- return goja.Undefined()
- }
- func (j *JSRtLogger) J_info(call goja.FunctionCall) goja.Value {
- if !j.isReg {
- return goja.Undefined()
- }
- j.LogFunc(JSRrLoggerLogLevelInfo, call.Arguments)
- return goja.Undefined()
- }
- func (j *JSRtLogger) J_warn(call goja.FunctionCall) goja.Value {
- if !j.isReg {
- return goja.Undefined()
- }
- j.LogFunc(JSRrLoggerLogLevelWarn, call.Arguments)
- return goja.Undefined()
- }
- func (j *JSRtLogger) J_error(call goja.FunctionCall) goja.Value {
- if !j.isReg {
- return goja.Undefined()
- }
- j.LogFunc(JSRrLoggerLogLevelError, call.Arguments)
- return goja.Undefined()
- }
|