Log4j: синхронизируется ли он для многопоточных вызовов?

Мы столкнулись с интересной проблемой, которую заметили во время нагрузочного тестирования нашей системы. Мы активно используем log4j (в JBOSS) для ведения логов. Вот наивный пример некоторого протоколирования, которое мы ведем

void someFunction()
{
Log.info("entered some function");
...

Log.info("existed some function");
}

Теперь интересная вещь, которую мы заметили: если мы запускаем 100 потоков против этой функции; вызовы Log.info() блокируются для каждого потока... то есть поток 2 ждет, пока поток 1 закончит вызов "Log.info". В случае с потоком 100; в итоге он ждет довольно долгое время... Мы используем встроенный файловый регистратор.

Это известная проблема?

17
задан javanna 18 February 2012 в 18:34
поделиться