我正在尝试诊断RealityServer应用程序中的问题,但是使用我的应用程序用户界面手动重现问题变得非常耗时。
有没有什么方法可以记录和重播RealityServer收到的JSON-RPC Web服务命令,这样我就可以在不使用应用程序用户界面的情况下重现我的问题?
最佳答案
RealityServer提供了两个用于监视请求的工具。在这种情况下,您可能最感兴趣的是RealityServer附带的Commandlog插件,但默认情况下处于禁用状态。您需要编辑您的Realityserver.conf文件,并取消注释相关行。这是文件的相关部分:
# uncomment below to enable the command logging state handler.
# this will record every JSON-RPC command received during a RealityServer
# session into a python script which can later be replayed to re-run the
# session. this can be useful for tracking down bugs.
# note that when enabled this will overwrite the replay.py file every
# time RealityServer starts so you must ensure you make a copy of any
# file you wish to keep. The file is created in the working directory,
# not the RealityServer root.
<url .*>
state Commandlog_state_handler
</url>
如前所述,启用此状态处理程序会将所有JSON-RPC请求记录到一个特殊的Python文件中。然后,您可以像下面这样运行该文件:
python replay.py 127.0.0.1:8080
然后,这会将记录的命令序列发送到正在运行的RealityServer。这些命令将与记录的命令完全相同,但不包括时序,因此将尽快播放。如果您的问题对时间敏感,则可能需要使用其他方法来捕获和重放数据。
注意: RealityServer在启动时会覆盖replay.py文件,因此,如果您希望在两次启动之间保留该文件,则必须将其复制为另一个名称。如果使用脚本自动重新启动RealityServer,则需要注意包括复制文件的步骤。
如果您希望记录所有HTTP请求而不仅仅是JSON-RPC请求,那么还可以为此添加以下realserver.conf选项:
http_log access.log
这将以Apache Log格式记录所有请求,这对于与支持该格式的工具一起使用非常有用。可以在here中找到RealityServer配置选项的完整列表。
关于3d - 记录和重播RealityServer Web服务请求,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31828139/