diff options
| author | Carbenium <carbenium@outlook.com> | 2015-08-21 17:54:47 +0200 |
|---|---|---|
| committer | Carbenium <carbenium@outlook.com> | 2015-08-21 17:54:47 +0200 |
| commit | e4c97f66529ecfc2e9b3f675e5ebecd199c1d4dc (patch) | |
| tree | dc7332aaa75ad7c10d2bff9c35e5032b46eb3633 /src/server/database/Logging | |
| parent | e9feddf862fd84eb106dd1d305e4a148ad1662bd (diff) | |
| parent | 1d2aafd39bcb79a67357d198ce9b2345642fdd39 (diff) | |
Merge pull request #15312 from StormBytePP/6.x_merge_common_and_move_database_out_of_shared
Core/Build: Merge common library and move database out of shared
Diffstat (limited to 'src/server/database/Logging')
| -rw-r--r-- | src/server/database/Logging/AppenderDB.cpp | 45 | ||||
| -rw-r--r-- | src/server/database/Logging/AppenderDB.h | 40 |
2 files changed, 85 insertions, 0 deletions
diff --git a/src/server/database/Logging/AppenderDB.cpp b/src/server/database/Logging/AppenderDB.cpp new file mode 100644 index 00000000000..9e6ab1a057c --- /dev/null +++ b/src/server/database/Logging/AppenderDB.cpp @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "AppenderDB.h" +#include "Database/DatabaseEnv.h" + +AppenderDB::AppenderDB(uint8 id, std::string const& name, LogLevel level, AppenderFlags /*flags*/, ExtraAppenderArgs /*extraArgs*/) + : Appender(id, name, level), realmId(0), enabled(false) { } + +AppenderDB::~AppenderDB() { } + +void AppenderDB::_write(LogMessage const* message) +{ + // Avoid infinite loop, PExecute triggers Logging with "sql.sql" type + if (!enabled || (message->type.find("sql") != std::string::npos)) + return; + + PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_LOG); + stmt->setUInt64(0, message->mtime); + stmt->setUInt32(1, realmId); + stmt->setString(2, message->type); + stmt->setUInt8(3, uint8(message->level)); + stmt->setString(4, message->text); + LoginDatabase.Execute(stmt); +} + +void AppenderDB::setRealmId(uint32 _realmId) +{ + enabled = true; + realmId = _realmId; +} diff --git a/src/server/database/Logging/AppenderDB.h b/src/server/database/Logging/AppenderDB.h new file mode 100644 index 00000000000..50607fd8136 --- /dev/null +++ b/src/server/database/Logging/AppenderDB.h @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef APPENDERDB_H +#define APPENDERDB_H + +#include "Appender.h" + +class AppenderDB: public Appender +{ + public: + typedef std::integral_constant<AppenderType, APPENDER_DB>::type TypeIndex; + + AppenderDB(uint8 id, std::string const& name, LogLevel level, AppenderFlags flags, ExtraAppenderArgs extraArgs); + ~AppenderDB(); + + void setRealmId(uint32 realmId) override; + AppenderType getType() const override { return TypeIndex::value; } + + private: + uint32 realmId; + bool enabled; + void _write(LogMessage const* message) override; +}; + +#endif |
