diff --git a/config/global.ini.default b/config/global.ini.default index 87c3b4cc..db3ec4a2 100644 --- a/config/global.ini.default +++ b/config/global.ini.default @@ -12,6 +12,8 @@ ServerSecret = default DataPath = C:\\SquareEnix\\FINAL FANTASY XIV - A Realm Reborn\\game\\sqpack WorldID = 67 DefaultGMRank = 255 +LogLevel = 1 +LogFilter = 0 [Network] ; Values definining how Users and other servers will access - these have to be set to your public IP when running a public server diff --git a/src/api/main.cpp b/src/api/main.cpp index 5fd967a0..92d422b1 100644 --- a/src/api/main.cpp +++ b/src/api/main.cpp @@ -713,6 +713,8 @@ int main( int argc, char* argv[] ) if( !loadSettings( argc, argv ) ) throw std::exception(); + Logger::setLogLevel( m_config.global.general.logLevel ); + server.resource[ "^/ZoneName/([0-9]+)$" ][ "GET" ] = &getZoneName; server.resource[ "^/sapphire-api/lobby/createAccount" ][ "POST" ] = &createAccount; server.resource[ "^/sapphire-api/lobby/login" ][ "POST" ] = &login; diff --git a/src/common/Config/ConfigDef.h b/src/common/Config/ConfigDef.h index 587ae30f..3aca9cff 100644 --- a/src/common/Config/ConfigDef.h +++ b/src/common/Config/ConfigDef.h @@ -16,6 +16,8 @@ namespace Sapphire::Common::Config uint16_t worldID; uint8_t defaultGMRank; + uint8_t logLevel; + uint32_t logFilter; } general; struct Network diff --git a/src/common/Config/ConfigMgr.cpp b/src/common/Config/ConfigMgr.cpp index a1ad914b..a4fa1bdc 100644 --- a/src/common/Config/ConfigMgr.cpp +++ b/src/common/Config/ConfigMgr.cpp @@ -57,6 +57,8 @@ bool Sapphire::ConfigMgr::loadGlobalConfig( Common::Config::GlobalConfig& config config.general.serverSecret = getValue< std::string >( "General", "ServerSecret", "default" ); config.general.worldID = getValue< uint16_t >( "General", "WorldID", 67 ); config.general.defaultGMRank = getValue< uint8_t >( "General", "DefaultGMRank", 255 ); + config.general.logLevel = getValue< uint8_t >( "General", "LogLevel", 1 ); + config.general.logFilter = getValue< uint32_t >( "General", "LogFilter", 0 ); // network config.network.zoneHost = getValue< std::string >( "Network", "ZoneHost", "127.0.0.1" ); diff --git a/src/common/Logging/Logger.cpp b/src/common/Logging/Logger.cpp index dbf83f4f..a8c17bff 100644 --- a/src/common/Logging/Logger.cpp +++ b/src/common/Logging/Logger.cpp @@ -53,6 +53,11 @@ namespace Sapphire spdlog::flush_on( spdlog::level::critical ); } + void Logger::setLogLevel( uint8_t logLevel ) + { + spdlog::set_level( static_cast< spdlog::level::level_enum >( logLevel ) ); + } + void Logger::error( const std::string& text ) { spdlog::get( "logger" )->error( text ); diff --git a/src/common/Logging/Logger.h b/src/common/Logging/Logger.h index 5151eb1d..af0c9d0d 100644 --- a/src/common/Logging/Logger.h +++ b/src/common/Logging/Logger.h @@ -19,6 +19,7 @@ namespace Sapphire public: static void init( const std::string& logPath ); + static void setLogLevel( uint8_t logLevel ); // todo: this is a minor increase in build time because of fmtlib, but much less than including spdlog directly diff --git a/src/lobby/ServerLobby.cpp b/src/lobby/ServerLobby.cpp index d1530dcf..47d8a868 100644 --- a/src/lobby/ServerLobby.cpp +++ b/src/lobby/ServerLobby.cpp @@ -63,6 +63,8 @@ namespace Sapphire return; } + Logger::setLogLevel( m_config.global.general.logLevel ); + auto pFw = std::make_shared< Framework >(); Network::HivePtr hive( new Network::Hive() ); Network::addServerToHive< Network::GameConnection >( m_ip, m_port, hive, pFw ); diff --git a/src/world/ServerMgr.cpp b/src/world/ServerMgr.cpp index 1b314584..7149356d 100644 --- a/src/world/ServerMgr.cpp +++ b/src/world/ServerMgr.cpp @@ -129,6 +129,8 @@ void Sapphire::World::ServerMgr::run( int32_t argc, char* argv[] ) return; } + Logger::setLogLevel( m_config.global.general.logLevel ); + Logger::info( "Setting up generated EXD data" ); auto pExdData = std::make_shared< Data::ExdDataGenerated >(); auto dataPath = m_config.global.general.dataPath;