2012-06-20 3 views
4

Уменьшает производительность регистрации приложений? и как ограничить журналы тегов-индикаторов для печати в файлах журналов?Log4j logs снижает производительность приложения?

например. мой файл журнала имеет ниже журналов

[2012-06-20 15:52:06,290] org.displaytag.tags.TableTag isFirstIteration 684 - [data] first iteration=true (row number=1) 
[2012-06-20 15:52:06,290] org.displaytag.tags.TableTag isFirstIteration 684 - [data] first iteration=true (row number=1) 
[2012-06-20 15:52:06,290] org.displaytag.tags.TableTag isFirstIteration 684 - [data] first iteration=true (row number=1) 
[2012-06-20 15:52:06,290] org.displaytag.tags.TableTag isFirstIteration 684 - [data] first iteration=true (row number=1) 

Почему приведенное выше в файле журнала?

log.properties файл

# Log4j configuration file. 
log4j.rootCategory=DEBUG, A1 
# Available levels are DEBUG, INFO, WARN, ERROR, FATAL 

# 
# A1 is a ConsoleAppender 
# 

log4j.appender.A1 = org.apache.log4j.RollingFileAppender 
log4j.appender.A1.File = C:/LogInfo/logfile.log 
log4j.appender.A1.MaxFileSize = 100MB 
log4j.appender.A1.MaxBackupIndex=50 
log4j.appender.A1.layout = org.apache.log4j.PatternLayout 
log4j.appender.A1.append = true 
log4j.appender.A1.layout.ConversionPattern = [%d] %C %M %L - %m%n 
log4j.appender.A1.Threshold = DEBUG 

как остановить (org.displaytag.tags.TableTag) такого рода журналы, которые будут напечатаны в лог-файлах

+0

возможно дубликат [производительность log4j] (http://stackoverflow.com/questions/3053134/log4j-performance) –

ответ

4

Выполняет ли ведение журнала сокращение производительности приложения?

Да. Насколько это зависит от ряда факторов; Смотри ниже.

и как ограничить запись в тегах журналов журналов в файлах журналов?

Изменяя ConversionPattern в свойствах лесозаготовительных

почему выше в лог-файл?

Потому что:

  1. где-то в коде есть вызов метод Logger (вероятно debug(String)) с этим сообщением, и
  2. ваших свойств протоколирования установить протоколирование Threshold, чтобы отладить для Appender.

Для повышения производительности:

  1. Измените ConversionPattern использовать менее дорогую дату/время форматирования, и (что более важно) избегать 'C', 'F', 'L' и 'M', потому что они особенно дороги.
  2. изменения лесозаготовительной Порог INFO или предупреждения или ошибки, чтобы уменьшить количество лесозаготовок,
  3. поставить Logger.debug(...) вызов внутри if заявления, который проверяет, что отлаживать регистрация включена. Это экономит затраты на сбор сообщения журнала в тех случаях, когда это не понадобится; см In log4j, does checking isDebugEnabled before logging improve performance?

Вы также можете войти дроссельную заслонку на уровне Logger ... как описаны в log4j documentation. Фактически, документация отвечает на большинство вопросов, которые вы задали, и имеет много подробностей по темам регистрации производительности и конфигурации регистрации.

+0

если я использую INFO, тогда я получу журналы (logger.debug (...)) в моем файле журнала? – happy

+2

@happy - прочитайте руководство ... см. Ссылку в моем ответе. Там все объяснено. (Ответ «нет».) –

0

Да они делают. Вот почему вы должны только регистрировать ошибку или что-то, что должно быть обязательно зарегистрировано. Вы также можете записывать информацию, полезную для отладки в канале отладки, так что это не повлияет на производительность.

+0

как остановить (org.displaytag.tags.TableTag) такого рода журналы для печати в файлах журналов – happy

+2

@happy вытащите их из шаблона конверсии. –

1

Короткий ответ: да, он снижает производительность приложения, поскольку он использует некоторые циклы процессора и другие ресурсы (память и т. Д.).

Смотрите также этот вопрос: log4j performance

1

Logging может быть 30% из вас процессорное время или больше. Что касается дрожания, то он является большим (и чаще), чем ваши задержки GC.

Простым способом сокращения накладных расходов является использование шаблона для отключения, с которого вы регистрируете каждое сообщение. В вашем случае это% C% M и% L, так как для получения этой информации требуется трассировка стека (стека entier).

+0

Как использовать шаблон для отключения? – happy

+1

Удалите выражения «% C% M% L» с помощью текстового редактора. –

0

Вы можете ограничить журналы мусора, как это. Установите корневой журнал как INFO, чтобы ненужные журналы отладки не приходили и не заполняли ваш файл журнала.

log4j.rootCategory=INFO, A1 

Если вы хотите, чтобы определенный класс или пакет выдавали журналы DEBUG, вы можете сделать это вот так.

log4j.logger.org.hibernate.event.def.DefaultLoadEventListener=DEBUG,A1 

выше будет печатать журналы уровня DEBUG из класса DefaultLoadEventListener в файле журнала вместе с другими бревнами уровня INFO.

+0

, если я использую INFO, тогда я получу журналы (logging.debug (...)) в моем файле журнала? – happy

+0

@happy - прочитайте руководство ... здесь все объяснено. –

+0

Нет только журналов logging.info (...). Для тестирования или отладки вы должны использовать уровень DEBUG, для развертывания он должен быть INFO. Если вы хотите, чтобы вы могли специально активировать журналы DEBUG для определенного класса, как я упомянул в мой ответ. –

Смежные вопросы