diff options
author | Naios <naios-dev@live.de> | 2015-03-11 10:06:24 +0100 |
---|---|---|
committer | Naios <naios-dev@live.de> | 2015-03-13 09:15:42 +0100 |
commit | 95ebe4f31cba6b4772cfd19f99da45039719807b (patch) | |
tree | 1cddae4f22eaf9ee6651dea46cdb42d9d39f6283 /src/server/shared/Logging/Appender.h | |
parent | a860c62fed3a1670488cb256788c5efe4467c19a (diff) |
Core/Log: Add type safe formatting
* improves safety and log speed through:
- variadic templates
- perfect forwarding
* fixes a newline in db logs
* improve performance of Appender::write by using std::ostringstream && std::move
Diffstat (limited to 'src/server/shared/Logging/Appender.h')
-rw-r--r-- | src/server/shared/Logging/Appender.h | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/server/shared/Logging/Appender.h b/src/server/shared/Logging/Appender.h index 6f38eb6aaf7..38c45b3bcf1 100644 --- a/src/server/shared/Logging/Appender.h +++ b/src/server/shared/Logging/Appender.h @@ -21,6 +21,7 @@ #include <unordered_map> #include <string> #include <time.h> +#include <type_traits> #include "Define.h" // Values assigned have their equivalent in enum ACE_Log_Priority @@ -57,16 +58,16 @@ enum AppenderFlags struct LogMessage { - LogMessage(LogLevel _level, std::string const& _type, std::string const& _text) - : level(_level), type(_type), text(_text), mtime(time(NULL)) + LogMessage(LogLevel _level, std::string const& _type, std::string&& _text) + : level(_level), type(_type), text(std::forward<std::string>(_text)), mtime(time(NULL)) { } static std::string getTimeStr(time_t time); std::string getTimeStr(); - LogLevel level; - std::string type; - std::string text; + LogLevel const level; + std::string const type; + std::string const text; std::string prefix; std::string param1; time_t mtime; @@ -91,11 +92,11 @@ class Appender AppenderFlags getFlags() const; void setLogLevel(LogLevel); - void write(LogMessage& message); + void write(LogMessage* message); static const char* getLogLevelString(LogLevel level); private: - virtual void _write(LogMessage const& /*message*/) = 0; + virtual void _write(LogMessage const* /*message*/) = 0; uint8 id; std::string name; |