【问题标题】:Robot Framework: log messages sent through log4j's ConsoleAppender are not visible in outputRobot Framework:通过 log4j 的 ConsoleAppender 发送的日志消息在输出中不可见
【发布时间】:2013-10-06 09:16:03
【问题描述】:

我使用带有在 java 库中实现的自定义关键字的 Robot Framework。从我的 java 类直接写入 System.out 的消息在机器人输出中可见 - 正如文档中所承诺的那样。但是,由于关键字实现是可重用的组件,独立于机器人框架,我希望在那里有更灵活的日志记录,而不是直接使用 System.out。我想如果我将我的日志输出重定向到 System.out(使用 log4j 的 ConsoleAppender),这些消息将在机器人输出中可见。不幸的是,它不起作用。

我的 log4j 属性文件:

log4j.appender.Stdout=org.apache.log4j.ConsoleAppender
log4j.appender.Stdout.Target=System.out
log4j.appender.Stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.Stdout.layout.conversionPattern=%d %-5p [%t] %F:%L %m%n
log4j.appender.Stdout.ImmediateFlush=true

log4j.appender.FA=org.apache.log4j.FileAppender
log4j.appender.FA.File=mylog.log
log4j.appender.FA.layout=org.apache.log4j.PatternLayout
log4j.appender.FA.layout.ConversionPattern=%d %-5p [%t] %F:%L %m%n

log4j.rootLogger=INFO,Stdout,FA

文件附加程序工作正常,日志文件已创建并包含所有日志消息,但相同的消息在控制台或机器人输出报告中不可见。当我在没有机器人框架的情况下运行组件时,相同的配置也适用于控制台。

您知道上述配置有什么问题吗?或者在避免从我的 java 类中直接使用 System.out 的同时获得机器人日志的任何其他建议?

【问题讨论】:

  • 您是使用 Process 库还是 OperatingSystem 库来运行您的 java 进程?
  • 我在 Windows 7 上使用 JDK 1.7.0 (25)。

标签: log4j robotframework


【解决方案1】:

默认情况下,ConsoleAppender 使用对 System.out 或 System.err 的保存引用。要覆盖此行为,您必须将 follow property 设置为 true。 尝试将此添加到您的 log4j.properties 文件中:

log4j.appender.Stdout.follow=true

【讨论】:

  • 谢谢,解决方案有效!现在 log4j 消息在机器人输出中可见。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-24
相关资源
最近更新 更多