aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared/Logging/AppenderDB.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/shared/Logging/AppenderDB.cpp')
-rw-r--r--src/server/shared/Logging/AppenderDB.cpp32
1 files changed, 20 insertions, 12 deletions
diff --git a/src/server/shared/Logging/AppenderDB.cpp b/src/server/shared/Logging/AppenderDB.cpp
index 63af9176193..d85a4db9f7a 100644
--- a/src/server/shared/Logging/AppenderDB.cpp
+++ b/src/server/shared/Logging/AppenderDB.cpp
@@ -16,12 +16,7 @@
*/
#include "AppenderDB.h"
-
-/* FIXME
-#include "DatabaseWorkerPool.h"
-#include "Implementation/LoginDatabase.h" // For logging
-extern DatabaseWorkerPool LoginDatabase;
-*/
+#include "Database/DatabaseEnv.h"
AppenderDB::AppenderDB(uint8 id, std::string const& name, LogLevel level, uint8 realmId):
Appender(id, name, APPENDER_DB, level), realm(realmId), enable(false)
@@ -32,13 +27,26 @@ AppenderDB::~AppenderDB()
{
}
-void AppenderDB::_write(LogMessage& /*message*/)
+void AppenderDB::_write(LogMessage& message)
{
-/* FIXME
- if (enable)
- LoginDatabase.PExecute("INSERT INTO logs (time, realm, type, severity, string) "
- "VALUES (" UI64FMTD ", %u, %u, '%s');", message.mtime, realm, message.type, message.level, message.text.c_str());
-*/
+ if (!enable)
+ return;
+ switch (message.type)
+ {
+ case LOG_FILTER_SQL:
+ case LOG_FILTER_SQL_DRIVER:
+ case LOG_FILTER_SQL_DEV:
+ break; // Avoid infinite loop, PExecute triggers Logging with LOG_FILTER_SQL type
+ default:
+ PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_LOG);
+ stmt->setUInt64(0, message.mtime);
+ stmt->setUInt32(1, realm);
+ stmt->setUInt8(2, message.type);
+ stmt->setUInt8(3, message.level);
+ stmt->setString(4, message.text);
+ LoginDatabase.Execute(stmt);
+ break;
+ }
}
void AppenderDB::setEnable(bool _enable)