Robotframework 将robot.api.logger调用重定向到文件,因为由于XML-RPC,消息不可见

Robotframework 将robot.api.logger调用重定向到文件,因为由于XML-RPC,消息不可见,robotframework,python-decorators,xml-rpc,python-logging,robotframework-pythonremoteserver,Robotframework,Python Decorators,Xml Rpc,Python Logging,Robotframework Pythonremoteserver,在我的一个项目中,我们在复杂的测试环境中使用Robot Framework和自定义关键字库,使用各种ECU和PC。一个关键字库必须由python远程服务器通过XML-RPC控制,因为它必须位于不同的PC上 现在,来自robot.api.logger调用的所有重要消息,如logger.debug()orderlogger.console(),都由于XML-RPC而被吞没。这是一个已知的问题,在报告中也有明确说明 在大多数情况下,这些API的工作方式与使用Robot时完全相同 框架正常。主要的限制是

在我的一个项目中,我们在复杂的测试环境中使用Robot Framework和自定义关键字库,使用各种ECU和PC。一个关键字库必须由python远程服务器通过XML-RPC控制,因为它必须位于不同的PC上

现在,来自robot.api.logger调用的所有重要消息,如
logger.debug()
order
logger.console()
,都由于XML-RPC而被吞没。这是一个已知的问题,在报告中也有明确说明

在大多数情况下,这些API的工作方式与使用Robot时完全相同 框架正常。主要的限制是使用 robot.api.logger或Python的日志模块当前不可用 支持

可以为
robot.api.logger
编写一个瘦包装器或装饰器,以便将所有调试消息重定向到一个简单的txt文件,如:

DEBUG HH:MM:SS > Message
WARN  HH:MM:SS > Message
如果出现问题,这将非常有用

当然,使用内置的python日志模块很容易,但是 我正在寻找一个解决方案,它可以改变现有代码的最小数量,并且我还希望将结果写入文本文件中,而不是将普通robot.api.logging添加到robot报告中,因为我们正在本地和远程使用同一个库

因此,基本上我需要找到一种扩展/重定向
robot.api.logger
调用的方法,首先使用普通的python日志模块,然后使用普通的
robot.api.logger

您可以修补
robot.api.logger
的函数,这样它也可以写入日志文件。此修补程序可能由库参数触发。 这将要求您只修改库的构造函数

RemoteLib.py

导入系统 从robot.api导入记录器 从robot.output导入librarylogger 从robotremoteserver导入robotremoteserver def写入(msg,level='INFO',html=False): write(msg、level、html) 以open('log.txt','a')作为f: 打印(f'{level}\tHH:MM:SS>{msg}',file=f) 类RemoteLib(): ROBOT_库_作用域='GLOBAL' ROBOT_库_版本=0.1 定义初始化(self,to_file=True): 如果要保存文件: logger.write=write def log_某物(self,msg): logger.info(msg) logger.debug(msg) logger.warn(msg) logger.trace(msg) logger.error(msg) logger.console(msg) 如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu': RobotRemoteServer(RemoteLib(),*sys.argv[1:]

本地机器人

***设置***
库RemoteLib to_file=False
***测试用例***
试验
记录某事

远程运行机器人

***设置***
图书馆遥控器http://127.0.0.1:8270
***测试用例***
试验
记录某事
您也可以在
write
补丁中使用Python日志模块,就像在Robot框架本身中使用一样