我使用Robot Framework和在java库中实现的自定义关键字。从我的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
文件appender工作正常,日志文件已创建并包含所有日志消息,但在控制台或机械手输出报告中看不到相同的消息。当我在没有机器人框架的情况下运行我的组件时,同样的配置也适用于控制台。
您是否知道上述配置有什么问题?或者任何其他建议有机器人日志,同时避免从我的java类直接使用System.out?
答案 0 :(得分:1)
默认情况下,ConsoleAppender使用保存的对System.out或System.err的引用。要覆盖此行为,必须将follow property设置为true。 尝试将此添加到log4j.properties文件中:
log4j.appender.Stdout.follow =真