Robot Framework: сообщения журнала, отправленные через ConsoleAppender log4j, не отображаются в выводе

Я использую Robot Framework с настраиваемыми ключевыми словами, реализованными в библиотеках Java. Сообщения, написанные непосредственно в System.out из моих классов java, видны в выходных данных робота - как и обещано в документации. Однако, поскольку реализации ключевых слов являются компонентами многократного использования, независимыми от фреймворка роботов, я хотел иметь более гибкое ведение журнала и не использовать System.out напрямую. Я думал, что если я перенаправлю вывод журнала на System.out (с помощью ConsoleAppender log4j), сообщения будут видны в выводе робота. К сожалению, это не работает.

Мой файл свойств 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

Приложение для файлов работает нормально, файл журнала создается и содержит все сообщения журнала, но одни и те же сообщения не отображаются ни на консоли, ни в выходных отчетах робота. Когда я запускаю свои компоненты без фреймворка робота, та же конфигурация работает и для консоли.

У вас есть идеи, что не так с приведенной выше конфигурацией? Или любые другие предложения по созданию журналов роботов, избегая прямого использования System.out из моих классов java?


person SmallGreenET    schedule 30.09.2013    source источник
comment
Используете ли вы библиотеку процессов или библиотеку операционной системы для запуска Java-процесса?   -  person binithb    schedule 30.09.2013
comment
Я использую JDK 1.7.0 (25) в Windows 7.   -  person SmallGreenET    schedule 01.10.2013


Ответы (1)


По умолчанию ConsoleAppender использует сохраненную ссылку на System.out или System.err. Чтобы изменить это поведение, существует свойство follow, вы должны установить значение true. Попробуйте добавить это в свой файл log4j.properties:

log4j.appender.Stdout.follow = true

person ombre42    schedule 07.10.2013
comment
Спасибо, решение работает! Теперь сообщения log4j отображаются в выводе робота. - person SmallGreenET; 08.10.2013