Как асинхронно использовать FileAppenders log4j?

Я работаю над торговым приложением с низкой задержкой. Мы хотели бы увеличить объем журналов lof4j, которые мы записываем в файл, при этом сводя к минимуму влияние на наше сквозное время обработки.

Каков рекомендуемый способ сделать это? Я думаю, что FileAppender.append является синхронным, поэтому нам нужно сделать что-то более умное....


person Phil Harvey    schedule 10.02.2011    source источник
comment
думаешь? Вы убедились, что это действительно узкое место? Это должно быть достаточно легко сделать.   -  person Joachim Sauer    schedule 10.02.2011
comment
Совет: проверьте JavaDoc для варианта BufferedIO.   -  person Joachim Sauer    schedule 10.02.2011


Ответы (3)


Да, приложения синхронны. Вы хотите что-то вроде этого:

http://www.spartanjava.com/2009/asynchronous-logging-with-log4j/

person Danny Thomas    schedule 10.02.2011
comment
Эта ссылка мертва. - person Daniel; 15.12.2016

имейте в виду, что AsyncAppender добавляет поток для каждого приложения, и что увеличение объема ведения журнала может означать существенное увеличение объема конкатенации строк, что часто означает значительный объем обработки/обработки/форматирования строк, что может быть довольно дорого (в любом случае по сравнению с задержкой, связанной с торговым приложением с низкой задержкой).

person Matt    schedule 10.02.2011

Если вам нужно войти из многопоточного приложения slf4j и его реализации logback гораздо лучший выбор.

person Boris Pavlović    schedule 10.02.2011
comment
это благоразумный флаг позволяет вам так говорить? - person Jérôme; 10.05.2013