diff options
Diffstat (limited to 'src/common')
| -rw-r--r-- | src/common/Logging/Log.cpp | 6 | ||||
| -rw-r--r-- | src/common/Logging/Log.h | 35 | ||||
| -rw-r--r-- | src/common/Utilities/StringFormat.h | 16 |
3 files changed, 25 insertions, 32 deletions
diff --git a/src/common/Logging/Log.cpp b/src/common/Logging/Log.cpp index d67ae7c8a56..96056dbc9e3 100644 --- a/src/common/Logging/Log.cpp +++ b/src/common/Logging/Log.cpp @@ -221,12 +221,12 @@ void Log::RegisterAppender(uint8 index, AppenderCreatorFn appenderCreateFn) appenderFactory[index] = appenderCreateFn; } -void Log::outMessage(std::string_view filter, LogLevel level, std::string&& message) +void Log::OutMessageImpl(std::string_view filter, LogLevel level, std::string&& message) { write(std::make_unique<LogMessage>(level, std::string(filter), std::move(message))); } -void Log::outCommand(std::string&& message, std::string&& param1) +void Log::OutCommandImpl(std::string&& message, std::string&& param1) { write(std::make_unique<LogMessage>(LOG_LEVEL_INFO, "commands.gm", std::move(message), std::move(param1))); } @@ -320,7 +320,7 @@ bool Log::SetLogLevel(std::string const& name, int32 newLeveli, bool isLogger /* return true; } -void Log::outCharDump(char const* str, uint32 accountId, uint64 guid, char const* name) +void Log::OutCharDump(char const* str, uint32 accountId, uint64 guid, char const* name) { if (!str || !ShouldLog("entities.player.dump", LOG_LEVEL_INFO)) return; diff --git a/src/common/Logging/Log.h b/src/common/Logging/Log.h index 83c00141455..cb4a0a61b74 100644 --- a/src/common/Logging/Log.h +++ b/src/common/Logging/Log.h @@ -68,22 +68,22 @@ class TC_COMMON_API Log bool ShouldLog(std::string_view type, LogLevel level) const; bool SetLogLevel(std::string const& name, int32 level, bool isLogger = true); - template<typename Format, typename... Args> - inline void outMessage(std::string_view filter, LogLevel const level, Format&& fmt, Args&&... args) + template<typename... Args> + void OutMessage(std::string_view filter, LogLevel const level, std::string_view fmt, Args&&... args) { - outMessage(filter, level, Trinity::StringFormat(std::forward<Format>(fmt), std::forward<Args>(args)...)); + OutMessageImpl(filter, level, Trinity::StringFormat(fmt, std::forward<Args>(args)...)); } - template<typename Format, typename... Args> - void outCommand(uint32 account, Format&& fmt, Args&&... args) + template<typename... Args> + void OutCommand(uint32 account, std::string_view fmt, Args&&... args) { if (!ShouldLog("commands.gm", LOG_LEVEL_INFO)) return; - outCommand(Trinity::StringFormat(std::forward<Format>(fmt), std::forward<Args>(args)...), std::to_string(account)); + OutCommandImpl(Trinity::StringFormat(fmt, std::forward<Args>(args)...), std::to_string(account)); } - void outCharDump(char const* str, uint32 account_id, uint64 guid, char const* name); + void OutCharDump(char const* str, uint32 account_id, uint64 guid, char const* name); void SetRealmId(uint32 id); @@ -111,8 +111,8 @@ class TC_COMMON_API Log void ReadAppendersFromConfig(); void ReadLoggersFromConfig(); void RegisterAppender(uint8 index, AppenderCreatorFn appenderCreateFn); - void outMessage(std::string_view filter, LogLevel level, std::string&& message); - void outCommand(std::string&& message, std::string&& param1); + void OutMessageImpl(std::string_view filter, LogLevel level, std::string&& message); + void OutCommandImpl(std::string&& message, std::string&& param1); std::unordered_map<uint8, AppenderCreatorFn> appenderFactory; std::unordered_map<uint8, std::unique_ptr<Appender>> appenders; @@ -129,19 +129,6 @@ class TC_COMMON_API Log #define sLog Log::instance() -#define LOG_EXCEPTION_FREE(filterType__, level__, ...) \ - { \ - try \ - { \ - sLog->outMessage(filterType__, level__, __VA_ARGS__); \ - } \ - catch (std::exception& e) \ - { \ - sLog->outMessage("server", LOG_LEVEL_ERROR, "Wrong format occurred (%s) at %s:%u.", \ - e.what(), __FILE__, __LINE__); \ - } \ - } - #ifdef PERFORMANCE_PROFILING #define TC_LOG_MESSAGE_BODY(filterType__, level__, ...) ((void)0) #elif TRINITY_PLATFORM != TRINITY_PLATFORM_WINDOWS @@ -156,7 +143,7 @@ void check_args(std::string const&, ...); if (false) \ check_args(__VA_ARGS__); \ \ - LOG_EXCEPTION_FREE(filterType__, level__, __VA_ARGS__); \ + sLog->OutMessage(filterType__, level__, __VA_ARGS__); \ } \ } while (0) #else @@ -165,7 +152,7 @@ void check_args(std::string const&, ...); __pragma(warning(disable:4127)) \ do { \ if (sLog->ShouldLog(filterType__, level__)) \ - LOG_EXCEPTION_FREE(filterType__, level__, __VA_ARGS__); \ + sLog->OutMessage(filterType__, level__, __VA_ARGS__); \ } while (0) \ __pragma(warning(pop)) #endif diff --git a/src/common/Utilities/StringFormat.h b/src/common/Utilities/StringFormat.h index da1615575a4..1de56097851 100644 --- a/src/common/Utilities/StringFormat.h +++ b/src/common/Utilities/StringFormat.h @@ -23,16 +23,16 @@ namespace Trinity { /// Default TC string format function. - template<typename Format, typename... Args> - inline std::string StringFormat(Format&& fmt, Args&&... args) + template<typename... Args> + std::string StringFormat(std::string_view fmt, Args&&... args) { try { - return fmt::sprintf(std::forward<Format>(fmt), std::forward<Args>(args)...); + return fmt::sprintf(fmt, std::forward<Args>(args)...); } - catch (const fmt::format_error& formatError) + catch (fmt::format_error const& formatError) { - std::string error = "An error occurred formatting string \"" + std::string(fmt) + "\" : " + std::string(formatError.what()); + std::string error = "An error occurred formatting string \"" + std::string(fmt) + "\" : " + formatError.what(); return error; } } @@ -48,6 +48,12 @@ namespace Trinity { return fmt.empty(); } + + /// Returns true if the given std::string_view is empty. + inline bool IsFormatEmptyOrNull(std::string_view const& fmt) + { + return fmt.empty(); + } } #endif |
