【问题标题】:robot framework info message not printing机器人框架信息消息未打印
【发布时间】:2019-03-07 13:43:17
【问题描述】:

我的 python 代码使用日志框架生成一个日志文件,所有INFO 消息都被捕获在日志文件中。我将我的程序与 ROBOT 框架集成,现在没有生成日志文件。而是将INFO 消息打印在log.html 中。我知道这是因为正在调用机器人现有记录器,因此INFO 被定向到log.html。我不想改变行为,我仍然希望仅使用INFO 级别消息单独生成用户定义的日志文件。

我怎样才能做到这一点?

【问题讨论】:

  • 您能否描述一下您如何创建和使用您的记录器等?您使用的是默认记录器吗?
  • 请说明这是使用机器人记录器接口还是侦听器 API?

标签: python logging robotframework


【解决方案1】:

Python 代码 --> 日志库 --> “日志文件”

RobotFramework --> Python 代码 --> 日志库 --> 默认为“log.html”

当您使用 python 代码运行时,它将允许您设置日志文件名。 但是当您使用robotframework 运行时,该文件默认设置为log.html(因为robot 在内部使用您正在使用的相同日志库),因此您的日志记录功能会被robotframework 覆盖。

这就是为什么你在 log.html 而不是你的文件中看到它的原因。

您也可以参考Robot Framework not creating file or writing to it

希望对你有帮助!

【讨论】:

    【解决方案2】:

    这个问题现在已经解决了,这是一个非常小的问题。但我仍在更深入地分析它,当我清楚确切原因时会更新。 这是我使用的模块,

    def call_logger(logger_name, logFile):
            level = logging.INFO
            l = logging.getLogger(logger_name)
            if not getattr(l, 'handler_set', None):
                    formatter = logging.Formatter('%(asctime)s : %(message)s')
                    fileHandler = logging.FileHandler(logFile, mode = 'a')
                    fileHandler.setFormatter(formatter)
                    streamHandler = logging.StreamHandler()
                    streamHandler.setFormatter(formatter)
                    l.setLevel(level)
                    l.addHandler(fileHandler)
                    l.addHandler(streamHandler)
                    l.handler_set = True
    

    当我将参数“logFile”更改为不同的名称“log_file”时,它起作用了。 看起来“logFile”是一个内置的机器人关键字。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-21
      • 2016-02-05
      • 1970-01-01
      • 1970-01-01
      • 2019-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多