aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared
diff options
context:
space:
mode:
authorclick <none@none>2010-11-19 13:13:07 +0100
committerclick <none@none>2010-11-19 13:13:07 +0100
commit67fade84d313285ae6b219fddddb4868a7de203a (patch)
tree8b3d53b165468334c392bc80687cbdad1cbf03df /src/server/shared
parent67cd8d18e1bb5e1c41670270def44c8b10f91945 (diff)
Core/Commands: Enable SQL query logging by config and command )patch by leak)
Closes issue 4853. --HG-- branch : trunk
Diffstat (limited to 'src/server/shared')
-rwxr-xr-xsrc/server/shared/Database/DatabaseWorkerPool.h19
-rwxr-xr-xsrc/server/shared/Database/MySQLConnection.cpp55
-rwxr-xr-xsrc/server/shared/Logging/Log.cpp1
-rwxr-xr-xsrc/server/shared/Logging/Log.h6
4 files changed, 45 insertions, 36 deletions
diff --git a/src/server/shared/Database/DatabaseWorkerPool.h b/src/server/shared/Database/DatabaseWorkerPool.h
index 9f7bf6d72dc..e15d50f00e3 100755
--- a/src/server/shared/Database/DatabaseWorkerPool.h
+++ b/src/server/shared/Database/DatabaseWorkerPool.h
@@ -254,17 +254,18 @@ class DatabaseWorkerPool
void CommitTransaction(SQLTransaction transaction)
{
- #ifdef SQLQUERY_LOG
- if (transaction->GetSize() == 0)
+ if (sLog.GetSQLDriverQueryLogging())
{
- sLog.outSQLDriver("Transaction contains 0 queries. Not executing.");
- return;
- }
- if (transaction->GetSize() == 1)
- {
- sLog.outSQLDriver("Warning: Transaction only holds 1 query, consider removing Transaction context in code.");
+ if (transaction->GetSize() == 0)
+ {
+ sLog.outSQLDriver("Transaction contains 0 queries. Not executing.");
+ return;
+ }
+ if (transaction->GetSize() == 1)
+ {
+ sLog.outSQLDriver("Warning: Transaction only holds 1 query, consider removing Transaction context in code.");
+ }
}
- #endif
Enqueue(new TransactionTask(transaction));
}
diff --git a/src/server/shared/Database/MySQLConnection.cpp b/src/server/shared/Database/MySQLConnection.cpp
index 35253cb9e8f..94244407c26 100755
--- a/src/server/shared/Database/MySQLConnection.cpp
+++ b/src/server/shared/Database/MySQLConnection.cpp
@@ -30,6 +30,7 @@
#include "PreparedStatement.h"
#include "DatabaseWorker.h"
#include "Timer.h"
+#include "Log.h"
MySQLConnection::MySQLConnection(MySQLConnectionInfo& connInfo) :
m_queue(NULL),
@@ -154,20 +155,19 @@ bool MySQLConnection::Execute(const char* sql)
return false;
{
- #ifdef SQLQUERY_LOG
- uint32 _s = getMSTime();
- #endif
+ uint32 _s;
+ if (sLog.GetSQLDriverQueryLogging())
+ _s = getMSTime();
+
if (mysql_query(m_Mysql, sql))
{
sLog.outSQLDriver("SQL: %s", sql);
sLog.outSQLDriver("SQL ERROR: %s", mysql_error(m_Mysql));
return false;
}
- else
+ else if (sLog.GetSQLDriverQueryLogging())
{
- #ifdef SQLQUERY_LOG
sLog.outSQLDriver("[%u ms] SQL: %s", getMSTimeDiff(_s, getMSTime()), sql);
- #endif
}
}
@@ -191,9 +191,10 @@ bool MySQLConnection::Execute(PreparedStatement* stmt)
MYSQL_STMT* msql_STMT = m_mStmt->GetSTMT();
MYSQL_BIND* msql_BIND = m_mStmt->GetBind();
- #ifdef SQLQUERY_LOG
- uint32 _s = getMSTime();
- #endif
+ uint32 _s;
+ if (sLog.GetSQLDriverQueryLogging())
+ _s = getMSTime();
+
if (mysql_stmt_bind_param(msql_STMT, msql_BIND))
{
sLog.outSQLDriver("[ERROR]: PreparedStatement (id: %u, database: `%s`) error binding params: %s",
@@ -209,11 +210,11 @@ bool MySQLConnection::Execute(PreparedStatement* stmt)
m_mStmt->ClearParameters();
return false;
}
-
- #ifdef SQLQUERY_LOG
- sLog.outSQLDriver("[%u ms] Prepared SQL: %u on database `%s`",
- getMSTimeDiff(_s, getMSTime()), index, m_connectionInfo.database.c_str());
- #endif
+
+ if (sLog.GetSQLDriverQueryLogging())
+ sLog.outSQLDriver("[%u ms] Prepared SQL: %u on database `%s`",
+ getMSTimeDiff(_s, getMSTime()), index, m_connectionInfo.database.c_str());
+
m_mStmt->ClearParameters();
return true;
}
@@ -236,9 +237,10 @@ bool MySQLConnection::_Query(PreparedStatement* stmt, MYSQL_RES **pResult, uint6
MYSQL_STMT* msql_STMT = m_mStmt->GetSTMT();
MYSQL_BIND* msql_BIND = m_mStmt->GetBind();
- #ifdef SQLQUERY_LOG
- uint32 _s = getMSTime();
- #endif
+ uint32 _s;
+ if (sLog.GetSQLDriverQueryLogging())
+ _s = getMSTime();
+
if (mysql_stmt_bind_param(msql_STMT, msql_BIND))
{
sLog.outSQLDriver("[ERROR]: PreparedStatement (id: %u, database: `%s`) error binding params: %s",
@@ -255,10 +257,10 @@ bool MySQLConnection::_Query(PreparedStatement* stmt, MYSQL_RES **pResult, uint6
return false;
}
- #ifdef SQLQUERY_LOG
- sLog.outSQLDriver("[%u ms] Prepared SQL: %u on database `%s`",
- getMSTimeDiff(_s, getMSTime()), index, m_connectionInfo.database.c_str());
- #endif
+ if (sLog.GetSQLDriverQueryLogging())
+ sLog.outSQLDriver("[%u ms] Prepared SQL: %u on database `%s`",
+ getMSTimeDiff(_s, getMSTime()), index, m_connectionInfo.database.c_str());
+
m_mStmt->ClearParameters();
*pResult = mysql_stmt_result_metadata(msql_STMT);
@@ -292,20 +294,19 @@ bool MySQLConnection::_Query(const char *sql, MYSQL_RES **pResult, MYSQL_FIELD *
return false;
{
- #ifdef SQLQUERY_LOG
- uint32 _s = getMSTime();
- #endif
+ uint32 _s;
+ if (sLog.GetSQLDriverQueryLogging())
+ _s = getMSTime();
+
if (mysql_query(m_Mysql, sql))
{
sLog.outSQLDriver("SQL: %s", sql);
sLog.outSQLDriver("query ERROR: %s", mysql_error(m_Mysql));
return false;
}
- else
+ else if (sLog.GetSQLDriverQueryLogging())
{
- #ifdef SQLQUERY_LOG
sLog.outSQLDriver("[%u ms] SQL: %s", getMSTimeDiff(_s,getMSTime()), sql);
- #endif
}
*pResult = mysql_store_result(m_Mysql);
diff --git a/src/server/shared/Logging/Log.cpp b/src/server/shared/Logging/Log.cpp
index 4116e5ed724..e06495d0252 100755
--- a/src/server/shared/Logging/Log.cpp
+++ b/src/server/shared/Logging/Log.cpp
@@ -166,6 +166,7 @@ void Log::Initialize()
m_logLevel = sConfig.GetIntDefault("LogLevel", LOGL_NORMAL);
m_logFileLevel = sConfig.GetIntDefault("LogFileLevel", LOGL_NORMAL);
m_dbLogLevel = sConfig.GetIntDefault("DBLogLevel", LOGL_NORMAL);
+ m_sqlDriverQueryLogging = sConfig.GetBoolDefault("SQLDriverQueryLogging", false);
m_logFilter = 0;
diff --git a/src/server/shared/Logging/Log.h b/src/server/shared/Logging/Log.h
index a4e8f7eb30e..019221f7811 100755
--- a/src/server/shared/Logging/Log.h
+++ b/src/server/shared/Logging/Log.h
@@ -118,6 +118,7 @@ class Log
void SetLogLevel(char * Level);
void SetLogFileLevel(char * Level);
void SetDBLogLevel(char * Level);
+ void SetSQLDriverQueryLogging(bool newStatus) { m_sqlDriverQueryLogging = newStatus; }
void SetRealmID(uint32 id) { realm = id; }
uint32 getLogFilter() const { return m_logFilter; }
@@ -128,6 +129,7 @@ class Log
bool GetLogDBLater() { return m_enableLogDBLater; }
void SetLogDB(bool enable) { m_enableLogDB = enable; }
void SetLogDBLater(bool value) { m_enableLogDBLater = value; }
+ bool GetSQLDriverQueryLogging() { return m_sqlDriverQueryLogging; }
private:
FILE* openLogFile(char const* configFileName,char const* configTimeStampFlag, char const* mode);
FILE* openGmlogPerAccount(uint32 account);
@@ -158,6 +160,10 @@ class Log
ColorTypes m_colors[4];
// log levels:
+ // false: errors only, true: full query logging
+ bool m_sqlDriverQueryLogging;
+
+ // log levels:
// 0 minimum/string, 1 basic/error, 2 detail, 3 full/debug
uint8 m_dbLogLevel;
uint8 m_logLevel;