Skip to content

Commit

Permalink
Added '-l/--log-level' to set log level.
Browse files Browse the repository at this point in the history
  • Loading branch information
Unarelith committed Jul 5, 2020
1 parent 8fa3ba4 commit 3a325c7
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 8 deletions.
26 changes: 21 additions & 5 deletions source/client/core/ClientApplication.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,14 @@ ClientApplication::ClientApplication(int argc, char **argv) : gk::CoreApplicatio
}

void ClientApplication::init() {
m_argumentParser.addArgument("host", {"-h", "--host", "Select the host to connect to.", "host"});
m_argumentParser.addArgument("port", {"-p", "--port", "Select the port to use.", "port"});
m_argumentParser.addArgument("host", {"-h", "--host", "Select the host to connect to.", "host"});
m_argumentParser.addArgument("port", {"-p", "--port", "Select the port to use.", "port"});
m_argumentParser.addArgument("singleplayer", {"-s", "--singleplayer", "Start in singleplayer mode."});
m_argumentParser.addArgument("multiplayer", {"-m", "--multiplayer", "Start in multiplayer mode."});
m_argumentParser.addArgument("working-dir", {"-w", "--working-dir", "Change the working directory to <dir>.", "dir"});
m_argumentParser.addArgument("multiplayer", {"-m", "--multiplayer", "Start in multiplayer mode."});
m_argumentParser.addArgument("working-dir", {"-w", "--working-dir", "Change the working directory to <dir>.", "dir"});
m_argumentParser.addArgument("texture-pack", {"-t", "--texture-pack", "Use texture pack <name>.", "name"});
m_argumentParser.addArgument("username", {"-u", "--username", "Use <username> when using -m or -s", "username"});
m_argumentParser.addArgument("username", {"-u", "--username", "Use <username> when using -m or -s", "username"});
m_argumentParser.addArgument("log-level", {"-l", "--log-level", "Choose the log level (debug, info, warning, error)", "level"});

m_loggerHandler.setName("client");

Expand All @@ -71,6 +72,21 @@ void ClientApplication::init() {
if (m_argumentParser.getArgument("help").isFound)
return;

if (m_argumentParser.getArgument("log-level").isFound) {
std::unordered_map<std::string, gk::LogLevel> levels = {
{"debug", gk::LogLevel::Debug},
{"info", gk::LogLevel::Info},
{"warning", gk::LogLevel::Warning},
{"error", gk::LogLevel::Error},
};

auto it = levels.find(m_argumentParser.getArgument("log-level").parameter);
if (it != levels.end())
m_loggerHandler.setMaxLevel(it->second);
else
gkWarning() << ("Failed to set log level to '" + m_argumentParser.getArgument("log-level").parameter + "': Invalid value").c_str();
}

if (m_argumentParser.getArgument("working-dir").isFound)
fs::current_path(m_argumentParser.getArgument("working-dir").parameter);

Expand Down
4 changes: 3 additions & 1 deletion source/client/states/TitleScreenState.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -122,12 +122,14 @@ void TitleScreenState::startSingleplayer(bool showLoadingState, const std::strin
if (m_thread.joinable())
m_thread.join();

m_thread = std::thread([this, worldName] () {
gk::LogLevel logLevel = gk::LoggerHandler::getInstance().maxLevel();
m_thread = std::thread([this, worldName, logLevel] () {
ServerApplication app{*m_eventHandler};

if (!worldName.empty())
app.setWorldName(worldName);

app.setLogLevel(logLevel);
app.setSingleplayer(true);
app.setPort(sf::Socket::AnyPort);
app.run();
Expand Down
18 changes: 17 additions & 1 deletion source/server/core/ServerApplication.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,14 +63,15 @@ ServerApplication::ServerApplication(gk::EventHandler &eventHandler) {
bool ServerApplication::init() {
std::srand(std::time(nullptr));

m_loggerHandler.setName("server");
gk::LoggerHandler::setInstance(m_loggerHandler);
m_loggerHandler.setName("server");

BlockGeometry::initOrientation();

m_argumentParser.addArgument("port", {"-p", "--port", "Select the port to use.", "port"});
m_argumentParser.addArgument("world", {"-w", "--world", "Select a world to use.", "world"});
m_argumentParser.addArgument("working-dir", {"-d", "--working-dir", "Change the working directory to <dir>.", "dir"});
m_argumentParser.addArgument("log-level", {"-l", "--log-level", "Choose the log level (debug, info, warning, error)", "level"});

m_argumentParser.parse();

Expand All @@ -93,6 +94,21 @@ bool ServerApplication::init() {
if (m_argumentParser.getArgument("world").isFound)
m_worldName = m_argumentParser.getArgument("world").parameter;

if (m_argumentParser.getArgument("log-level").isFound) {
std::unordered_map<std::string, gk::LogLevel> levels = {
{"debug", gk::LogLevel::Debug},
{"info", gk::LogLevel::Info},
{"warning", gk::LogLevel::Warning},
{"error", gk::LogLevel::Error},
};

auto it = levels.find(m_argumentParser.getArgument("log-level").parameter);
if (it != levels.end())
m_loggerHandler.setMaxLevel(it->second);
else
gkWarning() << ("Failed to set log level to '" + m_argumentParser.getArgument("log-level").parameter + "': Invalid value").c_str();
}

ServerConfig::loadConfigFromFile("config/server.lua");

m_server.init(m_port);
Expand Down
1 change: 1 addition & 0 deletions source/server/core/ServerApplication.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ class ServerApplication {
void setSingleplayer(bool isSingleplayer) { m_server.setSingleplayer(isSingleplayer); }
void setPort(u16 port) { m_port = port; }
void setWorldName(const std::string &worldName) { m_worldName = worldName; }
void setLogLevel(gk::LogLevel logLevel) { m_loggerHandler.setMaxLevel(logLevel); }

private:
void update();
Expand Down

0 comments on commit 3a325c7

Please sign in to comment.