Файл настроек производительности для log4j?

Вот мой текущий файл настроек log4j. Являются ли эти настройки идеальными для использования в производстве или есть что-то, что я должен удалить / изменить или изменить? Я спрашиваю, потому что я получаю все мои streamи, зависающие из-за блокировки log4j. Я проверил мои дескрипторы открытых файлов, в которых я использовал только 113.

# ***** Set root logger level to WARN and its two appenders to stdout and R. log4j.rootLogger=warn, stdout, R # ***** stdout is set to be a ConsoleAppender. log4j.appender.stdout=org.apache.log4j.ConsoleAppender # ***** stdout uses PatternLayout. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout # ***** Pattern to output the caller's file name and line number. log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n # ***** R is set to be a RollingFileAppender. log4j.appender.R=org.apache.log4j.RollingFileAppender log4j.appender.R.File=logs/myapp.log # ***** Max file size is set to 100KB log4j.appender.R.MaxFileSize=102400KB # ***** Keep one backup file log4j.appender.R.MaxBackupIndex=5 # ***** R uses PatternLayout. log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%p %t %d %c - %m%n #set httpclient debug levels log4j.logger.org.apache.component=ERROR,stdout log4j.logger.httpclient.wire=ERROR,stdout log4j.logger.org.apache.commons.httpclient=ERROR,stdout log4j.logger.org.apache.http.client.protocol=ERROR,stdout 

UPDATE *** Добавление образца дампа streamа из всех моих streamов (100)

 "pool-1-thread-5" - Thread [email protected] java.lang.Thread.State: BLOCKED on [email protected] owned by: pool-1-thread-35 at org.apache.log4j.Category.callAppenders(Category.java:201) at org.apache.log4j.Category.forcedLog(Category.java:388) at org.apache.log4j.Category.error(Category.java:302) 

Log4j 1.2 уязвим для взаимоблокировок, когда toString() создает вложенную регистрацию.

См. Старые старые проблемы, такие как Log4J, могут создавать условия взаимоблокировки (одновременное пожертвование пакетов) и Deadlock с помощью RollingFileAppender .

Он также имеет проблемы с синхронизацией блокировки производительности при большой одновременной нагрузке. Подобно Category callAppenders, синхронизация вызывает java.lang.Thread.State: BLOCKED и Move org.apache.log4j.Category для повторных попыток чтения / записи .

Даже AsyncAppender не свободен от чрезмерных блокировок: AsyncAppender.doAppend () не нуждается в синхронизации, а Deadlock в 1.2.15 вызван classами AsyncAppender и ThrowableInformation . Также будьте осторожны с переполнением AsyncAppender .

Одно из предостережений – всегда ограничивать уровень корневой категории как минимум INFO или выше. Это предотвратило бы регистрацию вызовов от ненужных блокировок, упомянутых выше. Простое ограничение порога приложения недостаточно, поскольку оно учитывается позже. См. Объяснение с аналогией публикации / подписки :

Чтобы ответить на ваш вопрос о том, как порог взаимодействует с категорией, в основном думайте, что это как публикация / подписка. Категория устанавливает то, что публикуется регистратором, пороговое значение устанавливает уровень подписки для приложения.

В случае необходимости вложенные категории интересов могут быть предоставлены более низкие приоритеты.

private static final Logger logger = Logger.getLogger(Foo.class); ли вы Logger для каждого classа, используя стандартный private static final Logger logger = Logger.getLogger(Foo.class); где Foo – class, в котором объявлен логгер? Если у вас есть только один экземпляр Logger во всем приложении, может возникнуть некоторое разногласие, если есть много журналов.

% F:% L оказывает серьезное влияние на производительность. Хотя я не вижу, как они могут вызвать блокировку, я бы предпочел исключить их для производства.

Это выглядит нормально. Я не вижу, как это может привести к блокировке log4j. Может быть, вы можете опубликовать ниспадающий stream вашей проблемы?

  • Как правильно инициализировать log4j?
  • Отключение выхода Log4J в Java
  • Конфигурация log4j через аргумент (ы) JVM?
  • Как настроить log4j только для хранения файлов журнала за последние семь дней?
  • Настройка ведения журнала Hibernate с использованием файла конфигурации XML Log4j?
  • Как отправить java.util.logging в log4j?
  • Log4j, настройка веб-приложения для использования относительного пути
  • log4j: вывод журнала определенного classа в конкретный appender
  • Log4J2 - назначение имени файла файла appender во время выполнения
  • Использование переменных системной среды в конфигурации log4j xml
  • java конвертировать миллисекунды в формат времени
  • Interesting Posts

    Угловое: выбранное по опции выбора не работает, как исключено, используя вместе с ngModel

    Нет маршрутов совпадений «/ users / sign_out» devise rails 3

    Создание переменной окружения Jenkins с помощью Groovy

    Блокировать обновления Windows 10 P2P с помощью корпоративного межсетевого экрана

    Работает ли HDCP для карт ATI / AMD на окнах 8?

    ASP.NET MVC 4 + Ninject MVC 3 = Нет конструктора без параметров, определенного для этого объекта

    Как просмотреть содержимое файла PFX в Windows?

    Нужен пакетный переключатель, который запускает / убивает приложения при запуске

    Существуют ли массивы переменной длины в c ++?

    Как преобразовать целое число в строку в C?

    Как добавить пользовательскую комбинацию клавиш для вложенного элемента меню?

    Ярлык для перезагрузки фрейма в Firefox?

    VIM уничтожает символические ссылки под Windows

    Получить управляемый bean-элемент JSF по имени в любом classе, связанном с Servlet

    Предотrotation расширения содержимого элементов сетки

    Давайте будем гением компьютера.