From 72663f4b8348bfcdd67886cfdd89a4ceb6779832 Mon Sep 17 00:00:00 2001 From: moneromooo-monero Date: Sat, 25 Mar 2017 20:12:32 +0000 Subject: [PATCH] easylogging++: allow clipping a common filename prefix --- external/easylogging++/easylogging++.cc | 18 +++++++++++++++--- external/easylogging++/easylogging++.h | 16 +++++++++++++++- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/external/easylogging++/easylogging++.cc b/external/easylogging++/easylogging++.cc index 1fca50678..3e8463fdf 100644 --- a/external/easylogging++/easylogging++.cc +++ b/external/easylogging++/easylogging++.cc @@ -767,7 +767,11 @@ std::string File::extractPathFromFilename(const std::string& fullPath, const cha return fullPath.substr(0, lastSlashAt + 1); } -void File::buildStrippedFilename(const char* filename, char buff[], std::size_t limit) { +void File::buildStrippedFilename(const char* filename, char buff[], const std::string &commonPrefix, std::size_t limit) { + if (!commonPrefix.empty()) { + if (!strncmp(filename, commonPrefix.c_str(), commonPrefix.size())) + filename += commonPrefix.size(); + } std::size_t sizeOfFilename = strlen(filename); if (sizeOfFilename >= limit) { filename += (sizeOfFilename - limit); @@ -2394,7 +2398,7 @@ base::type::string_t DefaultLogBuilder::build(const LogMessage* logMessage, bool if (logFormat->hasFlag(base::FormatFlags::File)) { // File base::utils::Str::clearBuff(buff, base::consts::kSourceFilenameMaxLength); - base::utils::File::buildStrippedFilename(logMessage->file().c_str(), buff); + base::utils::File::buildStrippedFilename(logMessage->file().c_str(), buff, ELPP->vRegistry()->getFilenameCommonPrefix()); base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kLogFileFormatSpecifier, std::string(buff)); } if (logFormat->hasFlag(base::FormatFlags::FileBase)) { @@ -2413,7 +2417,7 @@ base::type::string_t DefaultLogBuilder::build(const LogMessage* logMessage, bool // Location char* buf = base::utils::Str::clearBuff(buff, base::consts::kSourceFilenameMaxLength + base::consts::kSourceLineMaxLength); - base::utils::File::buildStrippedFilename(logMessage->file().c_str(), buff); + base::utils::File::buildStrippedFilename(logMessage->file().c_str(), buff, ELPP->vRegistry()->getFilenameCommonPrefix()); buf = base::utils::Str::addToBuff(buff, buf, bufLim); buf = base::utils::Str::addToBuff(":", buf, bufLim); buf = base::utils::Str::convertAndAddToBuff(logMessage->line(), base::consts::kSourceLineMaxLength, buf, bufLim, @@ -3072,6 +3076,14 @@ void Loggers::clearCategories(void) { ELPP->vRegistry()->clearCategories(); } +void Loggers::setFilenameCommonPrefix(const std::string &prefix) { + ELPP->vRegistry()->setFilenameCommonPrefix(prefix); +} + +const std::string &Loggers::getFilenameCommonPrefix() { + return ELPP->vRegistry()->getFilenameCommonPrefix(); +} + // VersionInfo const std::string VersionInfo::version(void) { diff --git a/external/easylogging++/easylogging++.h b/external/easylogging++/easylogging++.h index f4573fb80..c1daf7a68 100644 --- a/external/easylogging++/easylogging++.h +++ b/external/easylogging++/easylogging++.h @@ -1103,7 +1103,7 @@ class File : base::StaticClass { static std::string extractPathFromFilename(const std::string& fullPath, const char* seperator = base::consts::kFilePathSeperator); /// @brief builds stripped filename and puts it in buff - static void buildStrippedFilename(const char* filename, char buff[], + static void buildStrippedFilename(const char* filename, char buff[], const std::string &commonPrefix = NULL, std::size_t limit = base::consts::kSourceFilenameMaxLength); /// @brief builds base filename and puts it in buff static void buildBaseFilename(const std::string& fullPath, char buff[], @@ -2495,11 +2495,20 @@ class VRegistry : base::NoCopy, public base::threading::ThreadSafe { return !base::utils::hasFlag(LoggingFlag::DisableVModules, *m_pFlags); } + inline void setFilenameCommonPrefix(const std::string &prefix) { + m_filenameCommonPrefix = prefix; + } + + inline const std::string &getFilenameCommonPrefix() const { + return m_filenameCommonPrefix; + } + private: base::type::VerboseLevel m_level; base::type::EnumType* m_pFlags; std::map m_modules; std::deque> m_categories; + std::string m_filenameCommonPrefix; }; } // namespace base class LogMessage { @@ -2735,6 +2744,7 @@ class Storage : base::NoCopy, public base::threading::ThreadSafe { } return it->second; } + private: base::RegisteredHitCounters* m_registeredHitCounters; base::RegisteredLoggers* m_registeredLoggers; @@ -3925,6 +3935,10 @@ class Loggers : base::StaticClass { static void clearVModules(void); /// @brief Clears categories static void clearCategories(void); + /// @brief Sets filename common prefix + static void setFilenameCommonPrefix(const std::string &prefix); + /// @brief Gets filename common prefix + static const std::string &getFilenameCommonPrefix(); }; class VersionInfo : base::StaticClass { public: