mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-22 05:06:24 +00:00
feat(Core/Logging): rework logging (#4692)
* feat(Core/Logging): rework logging * correct level for sql.sql * del unused config options * Correct build * correct after merge * whitespace 20:29:37 1. 'Player.cpp'. Replace (1) 20:29:37 2. 'ObjectMgr.cpp'. Replace (3) * 1 * correct logging * correct affter merge * 1 * 2 * LOG_LEVEL_WARN * #include "AppenderDB.h" * 3 * 4 * 5 * 1. 'WorldSocket.cpp'. Replace (1) * 6 * 1
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
*/
|
||||
|
||||
#include "Common.h"
|
||||
#include "AppenderDB.h"
|
||||
#include "DatabaseEnv.h"
|
||||
#include "Config.h"
|
||||
#include "Log.h"
|
||||
@@ -47,7 +48,7 @@ bool stopEvent = false; // Setting it to tru
|
||||
/// Print out the usage string for this program on the console.
|
||||
void usage(const char* prog)
|
||||
{
|
||||
sLog->outString("Usage: \n %s [<options>]\n"
|
||||
LOG_INFO("server.authserver", "Usage: \n %s [<options>]\n"
|
||||
" -c config_file use config_file as configuration file\n\r",
|
||||
prog);
|
||||
}
|
||||
@@ -80,27 +81,29 @@ extern int main(int argc, char** argv)
|
||||
if (!sConfigMgr->LoadAppConfigs())
|
||||
return 1;
|
||||
|
||||
sLog->outString("%s (authserver)", GitRevision::GetFullVersion());
|
||||
sLog->outString("<Ctrl-C> to stop.\n");
|
||||
// Init logging
|
||||
sLog->RegisterAppender<AppenderDB>();
|
||||
sLog->Initialize();
|
||||
|
||||
sLog->outString(" █████╗ ███████╗███████╗██████╗ ██████╗ ████████╗██╗ ██╗");
|
||||
sLog->outString(" ██╔══██╗╚══███╔╝██╔════╝██╔══██╗██╔═══██╗╚══██╔══╝██║ ██║");
|
||||
sLog->outString(" ███████║ ███╔╝ █████╗ ██████╔╝██║ ██║ ██║ ███████║");
|
||||
sLog->outString(" ██╔══██║ ███╔╝ ██╔══╝ ██╔══██╗██║ ██║ ██║ ██╔══██║");
|
||||
sLog->outString(" ██║ ██║███████╗███████╗██║ ██║╚██████╔╝ ██║ ██║ ██║");
|
||||
sLog->outString(" ╚═╝ ╚═╝╚══════╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝");
|
||||
sLog->outString(" ██████╗ ██████╗ ██████╗ ███████╗");
|
||||
sLog->outString(" ██╔════╝██╔═══██╗██╔══██╗██╔═══╝");
|
||||
sLog->outString(" ██║ ██║ ██║██████╔╝█████╗");
|
||||
sLog->outString(" ██║ ██║ ██║██╔══██╗██╔══╝");
|
||||
sLog->outString(" ╚██████╗╚██████╔╝██║ ██║███████╗");
|
||||
sLog->outString(" ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝\n");
|
||||
|
||||
sLog->outString(" AzerothCore 3.3.5a - www.azerothcore.org\n");
|
||||
|
||||
sLog->outString("Using configuration file %s.", configFile.c_str());
|
||||
|
||||
sLog->outDetail("%s (Library: %s)", OPENSSL_VERSION_TEXT, SSLeay_version(SSLEAY_VERSION));
|
||||
LOG_INFO("server.authserver", "%s (authserver)", GitRevision::GetFullVersion());
|
||||
LOG_INFO("server.authserver", "<Ctrl-C> to stop.");
|
||||
LOG_INFO("server.authserver", " ");
|
||||
LOG_INFO("server.authserver", " █████╗ ███████╗███████╗██████╗ ██████╗ ████████╗██╗ ██╗");
|
||||
LOG_INFO("server.authserver", " ██╔══██╗╚══███╔╝██╔════╝██╔══██╗██╔═══██╗╚══██╔══╝██║ ██║");
|
||||
LOG_INFO("server.authserver", " ███████║ ███╔╝ █████╗ ██████╔╝██║ ██║ ██║ ███████║");
|
||||
LOG_INFO("server.authserver", " ██╔══██║ ███╔╝ ██╔══╝ ██╔══██╗██║ ██║ ██║ ██╔══██║");
|
||||
LOG_INFO("server.authserver", " ██║ ██║███████╗███████╗██║ ██║╚██████╔╝ ██║ ██║ ██║");
|
||||
LOG_INFO("server.authserver", " ╚═╝ ╚═╝╚══════╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝");
|
||||
LOG_INFO("server.authserver", " ██████╗ ██████╗ ██████╗ ███████╗");
|
||||
LOG_INFO("server.authserver", " ██╔════╝██╔═══██╗██╔══██╗██╔═══╝");
|
||||
LOG_INFO("server.authserver", " ██║ ██║ ██║██████╔╝█████╗");
|
||||
LOG_INFO("server.authserver", " ██║ ██║ ██║██╔══██╗██╔══╝");
|
||||
LOG_INFO("server.authserver", " ╚██████╗╚██████╔╝██║ ██║███████╗");
|
||||
LOG_INFO("server.authserver", " ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝\n");
|
||||
LOG_INFO("server.authserver", " AzerothCore 3.3.5a - www.azerothcore.org");
|
||||
LOG_INFO("server.authserver", " ");
|
||||
LOG_INFO("server.authserver", "Using configuration file %s.", configFile.c_str());
|
||||
LOG_INFO("server.authserver", "%s (Library: %s)", OPENSSL_VERSION_TEXT, SSLeay_version(SSLEAY_VERSION));
|
||||
|
||||
#if defined (ACE_HAS_EVENT_POLL) || defined (ACE_HAS_DEV_POLL)
|
||||
ACE_Reactor::instance(new ACE_Reactor(new ACE_Dev_Poll_Reactor(ACE::max_handles(), 1), 1), true);
|
||||
@@ -108,17 +111,17 @@ extern int main(int argc, char** argv)
|
||||
ACE_Reactor::instance(new ACE_Reactor(new ACE_TP_Reactor(), true), true);
|
||||
#endif
|
||||
|
||||
sLog->outBasic("Max allowed open files is %d", ACE::max_handles());
|
||||
LOG_INFO("server.authserver", "Max allowed open files is %d", ACE::max_handles());
|
||||
|
||||
// authserver PID file creation
|
||||
std::string pidFile = sConfigMgr->GetOption<std::string>("PidFile", "");
|
||||
if (!pidFile.empty())
|
||||
{
|
||||
if (uint32 pid = CreatePIDFile(pidFile))
|
||||
sLog->outError("Daemon PID: %u\n", pid); // outError for red color in console
|
||||
LOG_INFO("server.authserver", "Daemon PID: %u\n", pid); // outError for red color in console
|
||||
else
|
||||
{
|
||||
sLog->outError("Cannot create PID file %s (possible error: permission)\n", pidFile.c_str());
|
||||
LOG_ERROR("server.authserver", "Cannot create PID file %s (possible error: permission)\n", pidFile.c_str());
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
@@ -127,15 +130,11 @@ extern int main(int argc, char** argv)
|
||||
if (!StartDB())
|
||||
return 1;
|
||||
|
||||
// Initialize the log database
|
||||
sLog->SetLogDB(false);
|
||||
sLog->SetRealmID(0); // ensure we've set realm to 0 (authserver realmid)
|
||||
|
||||
// Get the list of realms for the server
|
||||
sRealmList->Initialize(sConfigMgr->GetOption<int32>("RealmsStateUpdateDelay", 20));
|
||||
if (sRealmList->size() == 0)
|
||||
{
|
||||
sLog->outError("No valid realms specified.");
|
||||
LOG_ERROR("server.authserver", "No valid realms specified.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -145,7 +144,7 @@ extern int main(int argc, char** argv)
|
||||
int32 rmport = sConfigMgr->GetOption<int32>("RealmServerPort", 3724);
|
||||
if (rmport < 0 || rmport > 0xFFFF)
|
||||
{
|
||||
sLog->outError("The specified RealmServerPort (%d) is out of the allowed range (1-65535)", rmport);
|
||||
LOG_ERROR("server.authserver", "The specified RealmServerPort (%d) is out of the allowed range (1-65535)", rmport);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -155,11 +154,11 @@ extern int main(int argc, char** argv)
|
||||
|
||||
if (acceptor.open(bind_addr, ACE_Reactor::instance(), ACE_NONBLOCK) == -1)
|
||||
{
|
||||
sLog->outError("Auth server can not bind to %s:%d (possible error: port already in use)", bind_ip.c_str(), rmport);
|
||||
LOG_ERROR("server.authserver", "Auth server can not bind to %s:%d (possible error: port already in use)", bind_ip.c_str(), rmport);
|
||||
return 1;
|
||||
}
|
||||
|
||||
sLog->outString("Authserver listening to %s:%d", bind_ip.c_str(), rmport);
|
||||
LOG_INFO("server.authserver", "Authserver listening to %s:%d", bind_ip.c_str(), rmport);
|
||||
|
||||
// Initialize the signal handlers
|
||||
acore::SignalHandler signalHandler;
|
||||
@@ -192,20 +191,20 @@ extern int main(int argc, char** argv)
|
||||
ULONG_PTR currentAffinity = affinity & appAff;
|
||||
|
||||
if (!currentAffinity)
|
||||
sLog->outError("server.authserver", "Processors marked in UseProcessors bitmask (hex) %x are not accessible for the authserver. Accessible processors bitmask (hex): %x", affinity, appAff);
|
||||
LOG_ERROR("server.authserver", "server.authserver", "Processors marked in UseProcessors bitmask (hex) %x are not accessible for the authserver. Accessible processors bitmask (hex): %x", affinity, appAff);
|
||||
else if (SetProcessAffinityMask(hProcess, currentAffinity))
|
||||
sLog->outString("server.authserver", "Using processors (bitmask, hex): %x", currentAffinity);
|
||||
LOG_INFO("server.authserver", "server.authserver", "Using processors (bitmask, hex): %x", currentAffinity);
|
||||
else
|
||||
sLog->outError("server.authserver", "Can't set used processors (hex): %x", currentAffinity);
|
||||
LOG_ERROR("server.authserver", "server.authserver", "Can't set used processors (hex): %x", currentAffinity);
|
||||
}
|
||||
}
|
||||
|
||||
if (highPriority)
|
||||
{
|
||||
if (SetPriorityClass(hProcess, HIGH_PRIORITY_CLASS))
|
||||
sLog->outString("server.authserver", "authserver process priority class set to HIGH");
|
||||
LOG_INFO("server.authserver", "server.authserver", "authserver process priority class set to HIGH");
|
||||
else
|
||||
sLog->outError("server.authserver", "Can't set authserver process priority class.");
|
||||
LOG_ERROR("server.authserver", "server.authserver", "Can't set authserver process priority class.");
|
||||
}
|
||||
|
||||
#else // Linux
|
||||
@@ -220,21 +219,21 @@ extern int main(int argc, char** argv)
|
||||
CPU_SET(i, &mask);
|
||||
|
||||
if (sched_setaffinity(0, sizeof(mask), &mask))
|
||||
sLog->outError("Can't set used processors (hex): %x, error: %s", affinity, strerror(errno));
|
||||
LOG_ERROR("server.authserver", "Can't set used processors (hex): %x, error: %s", affinity, strerror(errno));
|
||||
else
|
||||
{
|
||||
CPU_ZERO(&mask);
|
||||
sched_getaffinity(0, sizeof(mask), &mask);
|
||||
sLog->outString("Using processors (bitmask, hex): %lx", *(__cpu_mask*)(&mask));
|
||||
LOG_INFO("server.authserver", "Using processors (bitmask, hex): %lx", *(__cpu_mask*)(&mask));
|
||||
}
|
||||
}
|
||||
|
||||
if (highPriority)
|
||||
{
|
||||
if (setpriority(PRIO_PROCESS, 0, PROCESS_HIGH_PRIORITY))
|
||||
sLog->outError("Can't set authserver process priority class, error: %s", strerror(errno));
|
||||
LOG_ERROR("server.authserver", "Can't set authserver process priority class, error: %s", strerror(errno));
|
||||
else
|
||||
sLog->outString("authserver process priority class set to %i", getpriority(PRIO_PROCESS, 0));
|
||||
LOG_INFO("server.authserver", "authserver process priority class set to %i", getpriority(PRIO_PROCESS, 0));
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -244,13 +243,6 @@ extern int main(int argc, char** argv)
|
||||
uint32 numLoops = (sConfigMgr->GetOption<int32>("MaxPingTime", 30) * (MINUTE * 1000000 / 100000));
|
||||
uint32 loopCounter = 0;
|
||||
|
||||
// possibly enable db logging; avoid massive startup spam by doing it here.
|
||||
if (sConfigMgr->GetOption<bool>("EnableLogDB", false))
|
||||
{
|
||||
sLog->outString("Enabling database logging...");
|
||||
sLog->SetLogDB(true);
|
||||
}
|
||||
|
||||
// Wait for termination signal
|
||||
while (!stopEvent)
|
||||
{
|
||||
@@ -263,7 +255,7 @@ extern int main(int argc, char** argv)
|
||||
if ((++loopCounter) == numLoops)
|
||||
{
|
||||
loopCounter = 0;
|
||||
sLog->outDetail("Ping MySQL to keep connection alive");
|
||||
LOG_INFO("server.authserver", "Ping MySQL to keep connection alive");
|
||||
LoginDatabase.KeepAlive();
|
||||
}
|
||||
}
|
||||
@@ -271,7 +263,7 @@ extern int main(int argc, char** argv)
|
||||
// Close the Database Pool and library
|
||||
StopDB();
|
||||
|
||||
sLog->outString("Halting process...");
|
||||
LOG_INFO("server.authserver", "Halting process...");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -290,7 +282,8 @@ bool StartDB()
|
||||
if (!loader.Load())
|
||||
return false;
|
||||
|
||||
sLog->outString("Started auth database connection pool.");
|
||||
LOG_INFO("server.authserver", "Started auth database connection pool.");
|
||||
sLog->SetRealmId(0); // Enables DB appenders when realm is set.
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -191,13 +191,13 @@ AuthSocket::~AuthSocket() = default;
|
||||
// Accept the connection
|
||||
void AuthSocket::OnAccept()
|
||||
{
|
||||
sLog->outBasic("'%s:%d' Accepting connection", socket().getRemoteAddress().c_str(), socket().getRemotePort());
|
||||
LOG_INFO("server", "'%s:%d' Accepting connection", socket().getRemoteAddress().c_str(), socket().getRemotePort());
|
||||
}
|
||||
|
||||
void AuthSocket::OnClose()
|
||||
{
|
||||
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "AuthSocket::OnClose");
|
||||
LOG_DEBUG("network", "AuthSocket::OnClose");
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -221,7 +221,7 @@ void AuthSocket::OnRead()
|
||||
++challengesInARow;
|
||||
if (challengesInARow == MAX_AUTH_LOGON_CHALLENGES_IN_A_ROW)
|
||||
{
|
||||
sLog->outString("Got %u AUTH_LOGON_CHALLENGE in a row from '%s', possible ongoing DoS", challengesInARow, socket().getRemoteAddress().c_str());
|
||||
LOG_INFO("server", "Got %u AUTH_LOGON_CHALLENGE in a row from '%s', possible ongoing DoS", challengesInARow, socket().getRemoteAddress().c_str());
|
||||
socket().shutdown();
|
||||
return;
|
||||
}
|
||||
@@ -231,7 +231,7 @@ void AuthSocket::OnRead()
|
||||
challengesInARowRealmList++;
|
||||
if (challengesInARowRealmList == MAX_AUTH_GET_REALM_LIST)
|
||||
{
|
||||
sLog->outString("Got %u REALM_LIST in a row from '%s', possible ongoing DoS", challengesInARowRealmList, socket().getRemoteAddress().c_str());
|
||||
LOG_INFO("server", "Got %u REALM_LIST in a row from '%s', possible ongoing DoS", challengesInARowRealmList, socket().getRemoteAddress().c_str());
|
||||
socket().shutdown();
|
||||
return;
|
||||
}
|
||||
@@ -245,13 +245,13 @@ void AuthSocket::OnRead()
|
||||
if ((uint8)table[i].cmd == _cmd && (table[i].status == _status))
|
||||
{
|
||||
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "Got data for cmd %u recv length %u", (uint32)_cmd, (uint32)socket().recv_len());
|
||||
LOG_DEBUG("network", "Got data for cmd %u recv length %u", (uint32)_cmd, (uint32)socket().recv_len());
|
||||
#endif
|
||||
|
||||
if (!(*this.*table[i].handler)())
|
||||
{
|
||||
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "Command handler failed for cmd %u recv length %u", (uint32)_cmd, (uint32)socket().recv_len());
|
||||
LOG_DEBUG("network", "Command handler failed for cmd %u recv length %u", (uint32)_cmd, (uint32)socket().recv_len());
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
@@ -263,7 +263,7 @@ void AuthSocket::OnRead()
|
||||
if (i == AUTH_TOTAL_COMMANDS)
|
||||
{
|
||||
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "Got unknown packet from '%s'", socket().getRemoteAddress().c_str());
|
||||
LOG_DEBUG("network", "Got unknown packet from '%s'", socket().getRemoteAddress().c_str());
|
||||
#endif
|
||||
socket().shutdown();
|
||||
return;
|
||||
@@ -279,7 +279,7 @@ std::mutex LastLoginAttemptMutex;
|
||||
bool AuthSocket::_HandleLogonChallenge()
|
||||
{
|
||||
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "Entering _HandleLogonChallenge");
|
||||
LOG_DEBUG("network", "Entering _HandleLogonChallenge");
|
||||
#endif
|
||||
if (socket().recv_len() < sizeof(sAuthLogonChallenge_C))
|
||||
return false;
|
||||
@@ -321,7 +321,7 @@ bool AuthSocket::_HandleLogonChallenge()
|
||||
|
||||
uint16 remaining = ((sAuthLogonChallenge_C*)&buf[0])->size;
|
||||
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "[AuthChallenge] got header, body is %#04x bytes", remaining);
|
||||
LOG_DEBUG("network", "[AuthChallenge] got header, body is %#04x bytes", remaining);
|
||||
#endif
|
||||
|
||||
if ((remaining < sizeof(sAuthLogonChallenge_C) - buf.size()) || (socket().recv_len() < remaining))
|
||||
@@ -335,8 +335,8 @@ bool AuthSocket::_HandleLogonChallenge()
|
||||
// Read the remaining of the packet
|
||||
socket().recv((char*)&buf[4], remaining);
|
||||
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "[AuthChallenge] got full packet, %#04x bytes", ch->size);
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "[AuthChallenge] name(%d): '%s'", ch->I_len, ch->I);
|
||||
LOG_DEBUG("network", "[AuthChallenge] got full packet, %#04x bytes", ch->size);
|
||||
LOG_DEBUG("network", "[AuthChallenge] name(%d): '%s'", ch->I_len, ch->I);
|
||||
#endif
|
||||
|
||||
// BigEndian code, nop in little endian case
|
||||
@@ -376,7 +376,7 @@ bool AuthSocket::_HandleLogonChallenge()
|
||||
{
|
||||
pkt << uint8(WOW_FAIL_BANNED);
|
||||
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "'%s:%d' [AuthChallenge] Banned ip tries to login!", socket().getRemoteAddress().c_str(), socket().getRemotePort());
|
||||
LOG_DEBUG("network", "'%s:%d' [AuthChallenge] Banned ip tries to login!", socket().getRemoteAddress().c_str(), socket().getRemotePort());
|
||||
#endif
|
||||
}
|
||||
else
|
||||
@@ -395,24 +395,24 @@ bool AuthSocket::_HandleLogonChallenge()
|
||||
bool locked = false;
|
||||
if (fields[1].GetUInt8() == 1) // if ip is locked
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "[AuthChallenge] Account '%s' is locked to IP - '%s'", _login.c_str(), fields[2].GetCString());
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "[AuthChallenge] Player address is '%s'", ip_address.c_str());
|
||||
LOG_DEBUG("network", "[AuthChallenge] Account '%s' is locked to IP - '%s'", _login.c_str(), fields[2].GetCString());
|
||||
LOG_DEBUG("network", "[AuthChallenge] Player address is '%s'", ip_address.c_str());
|
||||
|
||||
if (strcmp(fields[3].GetCString(), ip_address.c_str()) != 0)
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "[AuthChallenge] Account IP differs");
|
||||
LOG_DEBUG("network", "[AuthChallenge] Account IP differs");
|
||||
pkt << uint8(WOW_FAIL_LOCKED_ENFORCED);
|
||||
locked = true;
|
||||
}
|
||||
else
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "[AuthChallenge] Account IP matches");
|
||||
LOG_DEBUG("network", "[AuthChallenge] Account IP matches");
|
||||
}
|
||||
else
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "[AuthChallenge] Account '%s' is not locked to ip", _login.c_str());
|
||||
LOG_DEBUG("network", "[AuthChallenge] Account '%s' is not locked to ip", _login.c_str());
|
||||
std::string accountCountry = fields[2].GetString();
|
||||
if (accountCountry.empty() || accountCountry == "00")
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "[AuthChallenge] Account '%s' is not locked to country", _login.c_str());
|
||||
LOG_DEBUG("network", "[AuthChallenge] Account '%s' is not locked to country", _login.c_str());
|
||||
else if (!accountCountry.empty())
|
||||
{
|
||||
uint32 ip = inet_addr(ip_address.c_str());
|
||||
@@ -423,18 +423,18 @@ bool AuthSocket::_HandleLogonChallenge()
|
||||
if (PreparedQueryResult sessionCountryQuery = LoginDatabase.Query(stmt))
|
||||
{
|
||||
std::string loginCountry = (*sessionCountryQuery)[0].GetString();
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "[AuthChallenge] Account '%s' is locked to country: '%s' Player country is '%s'", _login.c_str(), accountCountry.c_str(), loginCountry.c_str());
|
||||
LOG_DEBUG("network", "[AuthChallenge] Account '%s' is locked to country: '%s' Player country is '%s'", _login.c_str(), accountCountry.c_str(), loginCountry.c_str());
|
||||
if (loginCountry != accountCountry)
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "[AuthChallenge] Account country differs.");
|
||||
LOG_DEBUG("network", "[AuthChallenge] Account country differs.");
|
||||
pkt << uint8(WOW_FAIL_UNLOCKABLE_LOCK);
|
||||
locked = true;
|
||||
}
|
||||
else
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "[AuthChallenge] Account country matches");
|
||||
LOG_DEBUG("network", "[AuthChallenge] Account country matches");
|
||||
}
|
||||
else
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "[AuthChallenge] IP2NATION Table empty");
|
||||
LOG_DEBUG("network", "[AuthChallenge] IP2NATION Table empty");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -452,12 +452,12 @@ bool AuthSocket::_HandleLogonChallenge()
|
||||
if ((*banresult)[0].GetUInt32() == (*banresult)[1].GetUInt32())
|
||||
{
|
||||
pkt << uint8(WOW_FAIL_BANNED);
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "'%s:%d' [AuthChallenge] Banned account %s tried to login!", socket().getRemoteAddress().c_str(), socket().getRemotePort(), _login.c_str ());
|
||||
LOG_DEBUG("network", "'%s:%d' [AuthChallenge] Banned account %s tried to login!", socket().getRemoteAddress().c_str(), socket().getRemotePort(), _login.c_str ());
|
||||
}
|
||||
else
|
||||
{
|
||||
pkt << uint8(WOW_FAIL_SUSPENDED);
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "'%s:%d' [AuthChallenge] Temporarily banned account %s tried to login!", socket().getRemoteAddress().c_str(), socket().getRemotePort(), _login.c_str ());
|
||||
LOG_DEBUG("network", "'%s:%d' [AuthChallenge] Temporarily banned account %s tried to login!", socket().getRemoteAddress().c_str(), socket().getRemotePort(), _login.c_str ());
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -516,9 +516,8 @@ bool AuthSocket::_HandleLogonChallenge()
|
||||
_localizationName[i] = ch->country[4 - i - 1];
|
||||
|
||||
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
||||
sLog->outDebug( LOG_FILTER_NETWORKIO, "'%s:%d' [AuthChallenge] account %s is using '%c%c%c%c' locale (%u)", socket().getRemoteAddress().c_str(), socket().getRemotePort(), _login.c_str (), ch->country[3], ch->country[2], ch->country[1], ch->country[0], GetLocaleByName(_localizationName) );
|
||||
LOG_DEBUG("network", "'%s:%d' [AuthChallenge] account %s is using '%c%c%c%c' locale (%u)", socket().getRemoteAddress().c_str(), socket().getRemotePort(), _login.c_str (), ch->country[3], ch->country[2], ch->country[1], ch->country[0], GetLocaleByName(_localizationName) );
|
||||
#endif
|
||||
|
||||
///- All good, await client's proof
|
||||
_status = STATUS_LOGON_PROOF;
|
||||
}
|
||||
@@ -536,7 +535,7 @@ bool AuthSocket::_HandleLogonChallenge()
|
||||
bool AuthSocket::_HandleLogonProof()
|
||||
{
|
||||
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "Entering _HandleLogonProof");
|
||||
LOG_DEBUG("network", "Entering _HandleLogonProof");
|
||||
#endif
|
||||
// Read the packet
|
||||
sAuthLogonProof_C lp;
|
||||
@@ -551,7 +550,7 @@ bool AuthSocket::_HandleLogonProof()
|
||||
{
|
||||
// Check if we have the appropriate patch on the disk
|
||||
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "Client with invalid version, patching is not implemented");
|
||||
LOG_DEBUG("network", "Client with invalid version, patching is not implemented");
|
||||
#endif
|
||||
socket().shutdown();
|
||||
return true;
|
||||
@@ -561,7 +560,7 @@ bool AuthSocket::_HandleLogonProof()
|
||||
{
|
||||
_sessionKey = *K;
|
||||
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "'%s:%d' User '%s' successfully authenticated", socket().getRemoteAddress().c_str(), socket().getRemotePort(), _login.c_str());
|
||||
LOG_DEBUG("network", "'%s:%d' User '%s' successfully authenticated", socket().getRemoteAddress().c_str(), socket().getRemotePort(), _login.c_str());
|
||||
#endif
|
||||
|
||||
// Update the sessionkey, last_ip, last login time and reset number of failed logins in the account table for this account
|
||||
@@ -626,7 +625,7 @@ bool AuthSocket::_HandleLogonProof()
|
||||
socket().send(data, sizeof(data));
|
||||
|
||||
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "'%s:%d' [AuthChallenge] account %s tried to login with invalid password!", socket().getRemoteAddress().c_str(), socket().getRemotePort(), _login.c_str());
|
||||
LOG_DEBUG("network", "'%s:%d' [AuthChallenge] account %s tried to login with invalid password!", socket().getRemoteAddress().c_str(), socket().getRemotePort(), _login.c_str());
|
||||
#endif
|
||||
|
||||
uint32 MaxWrongPassCount = sConfigMgr->GetOption<int32>("WrongPass.MaxCount", 0);
|
||||
@@ -670,7 +669,7 @@ bool AuthSocket::_HandleLogonProof()
|
||||
LoginDatabase.Execute(stmt);
|
||||
|
||||
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "'%s:%d' [AuthChallenge] account %s got banned for '%u' seconds because it failed to authenticate '%u' times", socket().getRemoteAddress().c_str(), socket().getRemotePort(), _login.c_str(), WrongPassBanTime, failed_logins);
|
||||
LOG_DEBUG("network", "'%s:%d' [AuthChallenge] account %s got banned for '%u' seconds because it failed to authenticate '%u' times", socket().getRemoteAddress().c_str(), socket().getRemotePort(), _login.c_str(), WrongPassBanTime, failed_logins);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
@@ -681,7 +680,7 @@ bool AuthSocket::_HandleLogonProof()
|
||||
LoginDatabase.Execute(stmt);
|
||||
|
||||
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "'%s:%d' [AuthChallenge] IP %s got banned for '%u' seconds because account %s failed to authenticate '%u' times",
|
||||
LOG_DEBUG("network", "'%s:%d' [AuthChallenge] IP %s got banned for '%u' seconds because account %s failed to authenticate '%u' times",
|
||||
socket().getRemoteAddress().c_str(), socket().getRemotePort(), socket().getRemoteAddress().c_str(), WrongPassBanTime, _login.c_str(), failed_logins);
|
||||
#endif
|
||||
}
|
||||
@@ -697,7 +696,7 @@ bool AuthSocket::_HandleLogonProof()
|
||||
bool AuthSocket::_HandleReconnectChallenge()
|
||||
{
|
||||
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "Entering _HandleReconnectChallenge");
|
||||
LOG_DEBUG("network", "Entering _HandleReconnectChallenge");
|
||||
#endif
|
||||
if (socket().recv_len() < sizeof(sAuthLogonChallenge_C))
|
||||
return false;
|
||||
@@ -712,7 +711,7 @@ bool AuthSocket::_HandleReconnectChallenge()
|
||||
|
||||
uint16 remaining = ((sAuthLogonChallenge_C*)&buf[0])->size;
|
||||
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "[ReconnectChallenge] got header, body is %#04x bytes", remaining);
|
||||
LOG_DEBUG("network", "[ReconnectChallenge] got header, body is %#04x bytes", remaining);
|
||||
#endif
|
||||
|
||||
if ((remaining < sizeof(sAuthLogonChallenge_C) - buf.size()) || (socket().recv_len() < remaining))
|
||||
@@ -729,8 +728,8 @@ bool AuthSocket::_HandleReconnectChallenge()
|
||||
// Read the remaining of the packet
|
||||
socket().recv((char*)&buf[4], remaining);
|
||||
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "[ReconnectChallenge] got full packet, %#04x bytes", ch->size);
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "[ReconnectChallenge] name(%d): '%s'", ch->I_len, ch->I);
|
||||
LOG_DEBUG("network", "[ReconnectChallenge] got full packet, %#04x bytes", ch->size);
|
||||
LOG_DEBUG("network", "[ReconnectChallenge] name(%d): '%s'", ch->I_len, ch->I);
|
||||
#endif
|
||||
|
||||
_login = (const char*)ch->I;
|
||||
@@ -742,7 +741,7 @@ bool AuthSocket::_HandleReconnectChallenge()
|
||||
// Stop if the account is not found
|
||||
if (!result)
|
||||
{
|
||||
sLog->outError("'%s:%d' [ERROR] user %s tried to login and we cannot find his session key in the database.", socket().getRemoteAddress().c_str(), socket().getRemotePort(), _login.c_str());
|
||||
LOG_ERROR("server", "'%s:%d' [ERROR] user %s tried to login and we cannot find his session key in the database.", socket().getRemoteAddress().c_str(), socket().getRemotePort(), _login.c_str());
|
||||
socket().shutdown();
|
||||
return false;
|
||||
}
|
||||
@@ -782,7 +781,7 @@ bool AuthSocket::_HandleReconnectChallenge()
|
||||
bool AuthSocket::_HandleReconnectProof()
|
||||
{
|
||||
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "Entering _HandleReconnectProof");
|
||||
LOG_DEBUG("network", "Entering _HandleReconnectProof");
|
||||
#endif
|
||||
// Read the packet
|
||||
sAuthReconnectProof_C lp;
|
||||
@@ -820,7 +819,7 @@ bool AuthSocket::_HandleReconnectProof()
|
||||
}
|
||||
else
|
||||
{
|
||||
sLog->outError("'%s:%d' [ERROR] user %s tried to login, but session is invalid.", socket().getRemoteAddress().c_str(), socket().getRemotePort(), _login.c_str());
|
||||
LOG_ERROR("server", "'%s:%d' [ERROR] user %s tried to login, but session is invalid.", socket().getRemoteAddress().c_str(), socket().getRemotePort(), _login.c_str());
|
||||
socket().shutdown();
|
||||
return false;
|
||||
}
|
||||
@@ -852,7 +851,7 @@ ACE_INET_Addr const& AuthSocket::GetAddressForClient(Realm const& realm, ACE_INE
|
||||
bool AuthSocket::_HandleRealmList()
|
||||
{
|
||||
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "Entering _HandleRealmList");
|
||||
LOG_DEBUG("network", "Entering _HandleRealmList");
|
||||
#endif
|
||||
if (socket().recv_len() < 5)
|
||||
return false;
|
||||
@@ -866,7 +865,7 @@ bool AuthSocket::_HandleRealmList()
|
||||
PreparedQueryResult result = LoginDatabase.Query(stmt);
|
||||
if (!result)
|
||||
{
|
||||
sLog->outError("'%s:%d' [ERROR] user %s tried to login but we cannot find him in the database.", socket().getRemoteAddress().c_str(), socket().getRemotePort(), _login.c_str());
|
||||
LOG_ERROR("server", "'%s:%d' [ERROR] user %s tried to login but we cannot find him in the database.", socket().getRemoteAddress().c_str(), socket().getRemotePort(), _login.c_str());
|
||||
socket().shutdown();
|
||||
return false;
|
||||
}
|
||||
@@ -984,12 +983,12 @@ bool AuthSocket::_HandleRealmList()
|
||||
bool AuthSocket::_HandleXferResume()
|
||||
{
|
||||
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "Entering _HandleXferResume");
|
||||
LOG_DEBUG("network", "Entering _HandleXferResume");
|
||||
#endif
|
||||
// Check packet length and patch existence
|
||||
if (socket().recv_len() < 9 || !pPatch) // FIXME: pPatch is never used
|
||||
{
|
||||
sLog->outError("Error while resuming patch transfer (wrong packet)");
|
||||
LOG_ERROR("server", "Error while resuming patch transfer (wrong packet)");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1007,7 +1006,7 @@ bool AuthSocket::_HandleXferResume()
|
||||
bool AuthSocket::_HandleXferCancel()
|
||||
{
|
||||
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "Entering _HandleXferCancel");
|
||||
LOG_DEBUG("network", "Entering _HandleXferCancel");
|
||||
#endif
|
||||
|
||||
// Close and delete the socket
|
||||
@@ -1021,13 +1020,13 @@ bool AuthSocket::_HandleXferCancel()
|
||||
bool AuthSocket::_HandleXferAccept()
|
||||
{
|
||||
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "Entering _HandleXferAccept");
|
||||
LOG_DEBUG("network", "Entering _HandleXferAccept");
|
||||
#endif
|
||||
|
||||
// Check packet length and patch existence
|
||||
if (!pPatch)
|
||||
{
|
||||
sLog->outError("Error while accepting patch transfer (wrong packet)");
|
||||
LOG_ERROR("server", "Error while accepting patch transfer (wrong packet)");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1109,12 +1108,12 @@ void Patcher::LoadPatchMD5(char* szFileName)
|
||||
path += szFileName;
|
||||
FILE* pPatch = fopen(path.c_str(), "rb");
|
||||
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "Loading patch info from %s\n", path.c_str());
|
||||
LOG_DEBUG("network", "Loading patch info from %s\n", path.c_str());
|
||||
#endif
|
||||
|
||||
if (!pPatch)
|
||||
{
|
||||
sLog->outError("Error loading patch %s\n", path.c_str());
|
||||
LOG_ERROR("server", "Error loading patch %s\n", path.c_str());
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ protected:
|
||||
|
||||
virtual int handle_timeout(const ACE_Time_Value& /*current_time*/, const void* /*act = 0*/)
|
||||
{
|
||||
sLog->outBasic("Resuming acceptor");
|
||||
LOG_INFO("server", "Resuming acceptor");
|
||||
reactor()->cancel_timer(this, 1);
|
||||
return reactor()->register_handler(this, ACE_Event_Handler::ACCEPT_MASK);
|
||||
}
|
||||
@@ -46,7 +46,7 @@ protected:
|
||||
#if defined(ENFILE) && defined(EMFILE)
|
||||
if (errno == ENFILE || errno == EMFILE)
|
||||
{
|
||||
sLog->outError("Out of file descriptors, suspending incoming connections for 10 seconds");
|
||||
LOG_ERROR("server", "Out of file descriptors, suspending incoming connections for 10 seconds");
|
||||
reactor()->remove_handler(this, ACE_Event_Handler::ACCEPT_MASK | ACE_Event_Handler::DONT_CALL);
|
||||
reactor()->schedule_timer(this, nullptr, ACE_Time_Value(10));
|
||||
}
|
||||
|
||||
@@ -69,116 +69,6 @@ BindIP = "0.0.0.0"
|
||||
|
||||
PidFile = ""
|
||||
|
||||
#
|
||||
# LogLevel
|
||||
# Description: Server console level of logging
|
||||
# Default: 0 - (Minimum)
|
||||
# 1 - (Basic)
|
||||
# 2 - (Detail)
|
||||
# 3 - (Full/Debug)
|
||||
|
||||
LogLevel = 0
|
||||
|
||||
#
|
||||
# LogFile
|
||||
# Description: Log file for main server log.
|
||||
# Default: "Auth.log" - (Enabled)
|
||||
# "" - (Disabled)
|
||||
|
||||
LogFile = "Auth.log"
|
||||
|
||||
#
|
||||
# Debug Log Mask
|
||||
# Description: Bitmask that determines which debug log output (level 3)
|
||||
# will be logged.
|
||||
# Possible flags:
|
||||
#
|
||||
# 64 - Anything related to network input/output,
|
||||
# such as packet handlers and netcode logs
|
||||
#
|
||||
# Simply add the values together to create a bitmask.
|
||||
# For more info see enum DebugLogFilters in Log.h
|
||||
#
|
||||
# Default: 0 (nothing)
|
||||
|
||||
DebugLogMask = 64
|
||||
|
||||
#
|
||||
# SQLDriverLogFile
|
||||
# Description: Log file for SQL driver events.
|
||||
# Example: "AuthSQLDriver.log" - (Enabled)
|
||||
# Default: "" - (Disabled)
|
||||
|
||||
SQLDriverLogFile = ""
|
||||
|
||||
#
|
||||
# SQLDriverQueryLogging
|
||||
# Description: Log SQL queries to the SQLDriverLogFile and console.
|
||||
# Default: 0 - (Disabled, Query errors only)
|
||||
# 1 - (Enabled, Full query logging - may have performance impact)
|
||||
|
||||
SQLDriverQueryLogging = 0
|
||||
|
||||
#
|
||||
# LogTimestamp
|
||||
# Description: Append timestamp to the server log file name.
|
||||
# Logname_YYYY-MM-DD_HH-MM-SS.Ext for Logname.Ext
|
||||
# Default: 0 - (Disabled)
|
||||
# 1 - (Enabled)
|
||||
|
||||
LogTimestamp = 0
|
||||
|
||||
#
|
||||
# LogFileLevel
|
||||
# Description: Server file level of logging
|
||||
# Default: 0 - (Minimum)
|
||||
# 1 - (Basic)
|
||||
# 2 - (Detail)
|
||||
# 3 - (Full/Debug)
|
||||
|
||||
LogFileLevel = 0
|
||||
|
||||
#
|
||||
# LogColors
|
||||
# Description: Colors for log messages (Format: "normal basic detail debug").
|
||||
# Colors: 0 - Black
|
||||
# 1 - Red
|
||||
# 2 - Green
|
||||
# 3 - Brown
|
||||
# 4 - Blue
|
||||
# 5 - Magenta
|
||||
# 6 - Cyan
|
||||
# 7 - Grey
|
||||
# 8 - Yellow
|
||||
# 9 - Lred
|
||||
# 10 - Lgreen
|
||||
# 11 - Lblue
|
||||
# 12 - Lmagenta
|
||||
# 13 - Lcyan
|
||||
# 14 - White
|
||||
# Example: "13 11 9 5" - (Enabled)
|
||||
# Default: "" - (Disabled)
|
||||
|
||||
LogColors = ""
|
||||
|
||||
#
|
||||
# EnableLogDB
|
||||
# Description: Write log messages to database (LogDatabaseInfo).
|
||||
# Default: 0 - (Disabled)
|
||||
# 1 - (Enabled)
|
||||
|
||||
EnableLogDB = 0
|
||||
|
||||
#
|
||||
# DBLogLevel
|
||||
# Description: Log level of databases logging.
|
||||
# Default: 1 - (Basic)
|
||||
# 0 - (Minimum)
|
||||
# 2 - (Detail)
|
||||
# 3 - (Full/Debug)
|
||||
|
||||
DBLogLevel = 1
|
||||
|
||||
#
|
||||
# UseProcessors
|
||||
# Description: Processors mask for Windows and Linux based multi-processor systems.
|
||||
@@ -278,3 +168,95 @@ LoginDatabase.SynchThreads = 1
|
||||
|
||||
#
|
||||
###################################################################################################
|
||||
|
||||
###################################################################################################
|
||||
#
|
||||
# LOGGING SYSTEM SETTINGS
|
||||
#
|
||||
# Appender config values: Given an appender "name"
|
||||
# Appender.name
|
||||
# Description: Defines 'where to log'
|
||||
# Format: Type,LogLevel,Flags,optional1,optional2,optional3
|
||||
#
|
||||
# Type
|
||||
# 0 - (None)
|
||||
# 1 - (Console)
|
||||
# 2 - (File)
|
||||
# 3 - (DB)
|
||||
#
|
||||
# LogLevel
|
||||
# 0 - (Disabled)
|
||||
# 1 - (Fatal)
|
||||
# 2 - (Error)
|
||||
# 3 - (Warning)
|
||||
# 4 - (Info)
|
||||
# 5 - (Debug)
|
||||
# 6 - (Trace)
|
||||
#
|
||||
# Flags:
|
||||
# 0 - None
|
||||
# 1 - Prefix Timestamp to the text
|
||||
# 2 - Prefix Log Level to the text
|
||||
# 4 - Prefix Log Filter type to the text
|
||||
# 8 - Append timestamp to the log file name. Format: YYYY-MM-DD_HH-MM-SS (Only used with Type = 2)
|
||||
# 16 - Make a backup of existing file before overwrite (Only used with Mode = w)
|
||||
#
|
||||
# Colors (read as optional1 if Type = Console)
|
||||
# Format: "fatal error warn info debug trace"
|
||||
# 0 - BLACK
|
||||
# 1 - RED
|
||||
# 2 - GREEN
|
||||
# 3 - BROWN
|
||||
# 4 - BLUE
|
||||
# 5 - MAGENTA
|
||||
# 6 - CYAN
|
||||
# 7 - GREY
|
||||
# 8 - YELLOW
|
||||
# 9 - LRED
|
||||
# 10 - LGREEN
|
||||
# 11 - LBLUE
|
||||
# 12 - LMAGENTA
|
||||
# 13 - LCYAN
|
||||
# 14 - WHITE
|
||||
# Example: "1 9 3 6 5 8"
|
||||
#
|
||||
# File: Name of the file (read as optional1 if Type = File)
|
||||
# Allows to use one "%s" to create dynamic files
|
||||
#
|
||||
# Mode: Mode to open the file (read as optional2 if Type = File)
|
||||
# a - (Append)
|
||||
# w - (Overwrite)
|
||||
#
|
||||
# MaxFileSize: Maximum file size of the log file before creating a new log file
|
||||
# (read as optional3 if Type = File)
|
||||
# Size is measured in bytes expressed in a 64-bit unsigned integer.
|
||||
# Maximum value is 4294967295 (4 GB). Leave blank for no limit.
|
||||
# NOTE: Does not work with dynamic filenames.
|
||||
# Example: 536870912 (512 MB)
|
||||
#
|
||||
|
||||
Appender.Console=1,5,0,"1 9 3 6 5 8"
|
||||
Appender.Auth=2,5,0,Auth.log,w
|
||||
|
||||
# Logger config values: Given a logger "name"
|
||||
# Logger.name
|
||||
# Description: Defines 'What to log'
|
||||
# Format: LogLevel,AppenderList
|
||||
#
|
||||
# LogLevel
|
||||
# 0 - (Disabled)
|
||||
# 1 - (Fatal)
|
||||
# 2 - (Error)
|
||||
# 3 - (Warning)
|
||||
# 4 - (Info)
|
||||
# 5 - (Debug)
|
||||
# 6 - (Trace)
|
||||
#
|
||||
# AppenderList: List of appenders linked to logger
|
||||
# (Using spaces as separator).
|
||||
#
|
||||
|
||||
Logger.root=5,Console Auth
|
||||
|
||||
#
|
||||
###################################################################################################
|
||||
Reference in New Issue
Block a user