XTLS / libXray

MIT License
64 stars 57 forks source link

请问能否在iOS行动装置启动 xraykit时,透过mac上的 conslog.app 看到 xray 的所有 log #14

Closed ghostwolf90 closed 8 months ago

ghostwolf90 commented 8 months ago

感谢作者开源,已可以使用libxray打包出来的 xcframework 可以正常运作 唯独只有无法检视log的运作,因为想仿造当时 Mango 专案在运作时可以观看log 但碍于已联系不到作者,只能自行摸索开发现阶段的 go 程式码 尝试好几天都还没有办法把 log 显示出来,所以上来请教

yuhan6665 commented 8 months ago

可能跟安卓一样需要一个 log 转接的 例子 https://github.com/2dust/AndroidLibXrayLite/blob/60b58b68c6842b9effd883d5cf04dcef873d127a/libv2ray_main.go#L236

yiguous commented 8 months ago

感谢作者开源,已可以使用libxray打包出来的 xcframework 可以正常运作 唯独只有无法检视log的运作,因为想仿造当时 Mango 专案在运作时可以观看log 但碍于已联系不到作者,只能自行摸索开发现阶段的 go 程式码 尝试好几天都还没有办法把 log 显示出来,所以上来请教

受限于 Network Extensions 进程限制,常规 print 是无法输出文本日志到 Console.app 的,会被隐藏为二进制信息。

两种思路:

  1. 采用 @yuhan6665 的方案,转发 xray log 至 native 中,使用 Logger.xxxx("(String(reflecting: msg), privacy: .public)") 输出。
  2. 将 log 记录至文件,https://xtls.github.io/config/log.html#logobject 。自定义 log 可调用 Xray 内置 error 写入文件。
ghostwolf90 commented 8 months ago

感謝兩位回答,我確實有參考 AndroidLibXrayLite 裡的log機制 透過 ChatGPT4 的解說,並將這段程式碼放進去,但是並沒有執行,也許只是我並不全面了解他的運作原理

v2applog.RegisterHandlerCreator(v2applog.LogType_Console,
    func(lt v2applog.LogType, options v2applog.HandlerCreatorOptions) (v2commlog.Handler, error) {
        return v2commlog.NewLogger(createStdoutLogWriter()), nil
    })

我會嘗試用這兩種方法去處理,感謝回覆