Отключите ведение журнала с помощью log4cxx для минимальных накладных расходов.

Я использую log4cxx для ведения журнала. Однако ведение журнала может привести к некоторой нагрузке на производительность, которую мне необходимо минимизировать.

Как отключить ведение журнала (во время выполнения или во время компиляции), чтобы свести к минимуму накладные расходы, за исключением удаления всех операторов журнала из кода?

В документации указано, что

Пользователь должен знать о следующих проблемах с производительностью.

Ведение журнала производительности, когда ведение журнала отключено.

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

Но как его полностью отключить? Это минимальные накладные расходы, которые могут быть достигнуты?


person clstaudt    schedule 08.02.2013    source источник


Ответы (1)


Если вы действительно хотите отключить все ведение журнала во время компиляции, просто переопределите макросы log4cxx на ничего, т.е.

#define LOG4CXX_TRACE(logger, expression)    
#define LOG4CXX_DEBUG(logger, expression)    
#define LOG4CXX_INFO(logger, expression)   
#define LOG4CXX_WARN(logger, expression)    
#define LOG4CXX_ERROR(logger, expression)    
#define LOG4CXX_FATAL(logger, expression) 

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

person jmetcalfe    schedule 08.02.2013