bool Log::shouldLog(CallSite& site) { LogLock lock; if (!lock.ok()) { return false; } Globals& g = Globals::get(); Settings& s = Settings::get(); s.shouldLogCallCounter += 1; std::string class_name = className(site.mClassInfo); std::string function_name = functionName(site.mFunction); if (site.mClassInfo != typeid(NoClassInfo)) { function_name = class_name + "::" + function_name; } ELevel compareLevel = s.defaultLevel; checkLevelMap(s.functionLevelMap, function_name, compareLevel) || checkLevelMap(s.classLevelMap, class_name, compareLevel) || checkLevelMap(s.fileLevelMap, abbreviateFile(site.mFile), compareLevel); site.mCached = true; g.addCallSite(site); return site.mShouldLog = site.mLevel >= compareLevel; }
bool Log::shouldLog(CallSite& site) { LogLock lock; if (!lock.ok()) { return false; } AIAccess<Settings> settings_w(Settings::get()); settings_w->shouldLogCallCounter += 1; std::string class_name = className(site.mClassInfo); std::string function_name = functionName(site.mFunction); if (site.mClassInfo != typeid(NoClassInfo)) { function_name = class_name + "::" + function_name; } ELevel compareLevel = settings_w->defaultLevel; // The most specific match found will be used as the log level, // since the computation short circuits. // So, in increasing order of importance: // Default < Broad Tag < File < Class < Function < Narrow Tag ((site.mNarrowTag != NULL) ? checkLevelMap(settings_w->tagLevelMap, site.mNarrowTag, compareLevel) : false) || checkLevelMap(settings_w->functionLevelMap, function_name, compareLevel) || checkLevelMap(settings_w->classLevelMap, class_name, compareLevel) || checkLevelMap(settings_w->fileLevelMap, abbreviateFile(site.mFile), compareLevel) || ((site.mBroadTag != NULL) ? checkLevelMap(settings_w->tagLevelMap, site.mBroadTag, compareLevel) : false); site.mCached = true; AIAccess<Globals>(Globals::get())->addCallSite(site); return site.mShouldLog = site.mLevel >= compareLevel; }
bool Log::shouldLog(CallSite& site) { LogLock lock; if (!lock.ok()) { return false; } Globals& g = Globals::get(); Settings& s = Settings::get(); s.shouldLogCallCounter += 1; std::string class_name = className(site.mClassInfo); std::string function_name = functionName(site.mFunction); #if LL_LINUX // gross, but typeid comparison seems to always fail here with gcc4.1 if (0 != strcmp(site.mClassInfo.name(), typeid(NoClassInfo).name())) #else if (site.mClassInfo != typeid(NoClassInfo)) #endif // LL_LINUX { function_name = class_name + "::" + function_name; } ELevel compareLevel = s.defaultLevel; // The most specific match found will be used as the log level, // since the computation short circuits. // So, in increasing order of importance: // Default < Broad Tag < File < Class < Function < Narrow Tag ((site.mNarrowTag != NULL) ? checkLevelMap(s.tagLevelMap, site.mNarrowTag, compareLevel) : false) || checkLevelMap(s.functionLevelMap, function_name, compareLevel) || checkLevelMap(s.classLevelMap, class_name, compareLevel) || checkLevelMap(s.fileLevelMap, abbreviateFile(site.mFile), compareLevel) || ((site.mBroadTag != NULL) ? checkLevelMap(s.tagLevelMap, site.mBroadTag, compareLevel) : false); site.mCached = true; g.addCallSite(site); return site.mShouldLog = site.mLevel >= compareLevel; }