Кунштюки
Недавно ковырял апачевский LOG4CXX - набрел там на оч красивый кусочек кода:
#define LOG4CXX_DEBUG(logger, message) { \
if (LOG4CXX_UNLIKELY(logger->isDebugEnabled( ))) {\
::log4cxx::helpers::MessageBuffer oss_; \
logger->forcedLog(::log4cxx::Level::getD ebug(), oss_.str(oss_ << message), LOG4CXX_LOCATION); }}
что это дает, а дает это следующее
в случае вызова :
LOG4CXX_DEBUG(logger, "THIS MESSAGE MUST NOT BE DISPLAYED "<< getSomeHeavyCalculation() <<" NEVER EVER");
при уровне логера меньшем чем DEBUG, вся калькуляция связаная с запихиванием параметров в поток не будет вычислятся вообще, и это будет сделано на рантайме.
А какие красивые кунштюки запомнились вам?
#define LOG4CXX_DEBUG(logger, message) { \
if (LOG4CXX_UNLIKELY(logger->isDebugEnabled(
::log4cxx::helpers::MessageBuffer oss_; \
logger->forcedLog(::log4cxx::Level::getD
что это дает, а дает это следующее
в случае вызова :
LOG4CXX_DEBUG(logger, "THIS MESSAGE MUST NOT BE DISPLAYED "<< getSomeHeavyCalculation() <<" NEVER EVER");
при уровне логера меньшем чем DEBUG, вся калькуляция связаная с запихиванием параметров в поток не будет вычислятся вообще, и это будет сделано на рантайме.
А какие красивые кунштюки запомнились вам?
