mirror of
https://github.com/XTLS/Xray-core.git
synced 2026-10-07 16:20:00 +00:00
add log module
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
package log
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
lua "github.com/yuin/gopher-lua"
|
||||
)
|
||||
|
||||
// RegisterLua makes xray.log available to require in an LState.
|
||||
// Logging functions concatenate arguments using Lua's tostring semantics,
|
||||
// except Go errors in userdata use Error(). Messages go through the current
|
||||
// log handler.
|
||||
func RegisterLua(L *lua.LState) {
|
||||
L.PreloadModule("xray.log", func(L *lua.LState) int {
|
||||
module := L.NewTable()
|
||||
for name, severity := range map[string]Severity{
|
||||
"debug": Severity_Debug,
|
||||
"info": Severity_Info,
|
||||
"warning": Severity_Warning,
|
||||
"error": Severity_Error,
|
||||
} {
|
||||
module.RawSetString(name, L.NewFunction(func(L *lua.LState) int {
|
||||
var content strings.Builder
|
||||
for i := 1; i <= L.GetTop(); i++ {
|
||||
value := L.Get(i)
|
||||
if ud, ok := value.(*lua.LUserData); ok {
|
||||
if err, ok := ud.Value.(error); ok {
|
||||
content.WriteString(err.Error())
|
||||
continue
|
||||
}
|
||||
}
|
||||
content.WriteString(L.ToStringMeta(value).String())
|
||||
}
|
||||
Record(&GeneralMessage{
|
||||
Severity: severity,
|
||||
Content: content.String(),
|
||||
})
|
||||
return 0
|
||||
}))
|
||||
}
|
||||
L.Push(module)
|
||||
return 1
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user