1

我使用带有在 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 的同时获得机器人日志的任何其他建议?

4

1 回答 1

1

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

log4j.appender.Stdout.follow=true

于 2013-10-07T15:15:41.110 回答