Перехват логов Selenium и geckodriver в log4j2

При запуске автотеста в консоль валится куча сообщений от geckodriver:

|1536300673916|geckodriver|INFO|geckodriver 0.18.0|
|---|---|---|---|
|1536300673925|geckodriver|INFO|Listening on 127.0.0.1:9577|
|1536300674636|geckodriver::marionette|INFO|Starting browser C://Program Files//Mozilla Firefox//firefox.exe with args ["-marionette"]|

А также немного от самого selenium (как видно - шаблон у них разный):

сен 07, 2018 9:11:16 AM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C

Судя по зависимостям - selenium-java использует commons-logging. У меня подключен log4j2 и мост log4j-jcl, но в лог-файлы записи не попадают. Судя по красному цвету логов в консоли eclipse, запись идёт в stderr

Одинаковая ситуация и на Windows платформе и на Linux.

Существует ли возможность перехвата всех логов?.

Это нужно для сбора всей информации о тесте (лог событий, снимки экрана на определённых шагах и т.п.) и упаковки в архив типа “Результаты запуска теста №5.7z”

Selenium использует JUL. Видимо нужен адаптер log4j-jul. К сожалению нет возможности проверить.
Вывод geckodriver’а можно перенаправить в файл системной переменной webdriver.firefox.logfile, например -Dwebdriver.firefox.logfile=/dev/null

1 Like

На сколько я помню, нужно сделать xml конфигурацию log4j2 и вставить туда FileAppender для записи логов. Но вроде как файл куда пишется лог будет заблоченый логером пока не остановить все тесты.

Небольшое уточнение - selenium (по крайней мере версии 3.14.0) использует commons-logging
указание
options.setLogLevel(FirefoxDriverLogLevel.ERROR);
уменьшило количество “мусора” в консоли, теперь там записи только от geckodriver-а:
1536561997084 geckodriver INFO geckodriver 0.18.0
1536561997096 geckodriver INFO Listening on 127.0.0.1:8062
1536561998606 addons.manager DEBUG Application has been upgraded

Вопрос теперь звучит так:
Как можно попросить selenium запускать geckodriver с параметром тип log-level или вообще указать - куда складывать логи?