diff --git a/src/Loggers.cc b/src/Loggers.cc new file mode 100644 index 00000000..42aa65e9 --- /dev/null +++ b/src/Loggers.cc @@ -0,0 +1,57 @@ +#include "Loggers.hh" + +#include + +using namespace std; + + + +PrefixedLogger ax_messages_log ("[$ax message] " , LogLevel::USE_DEFAULT); +PrefixedLogger channel_exceptions_log("[Channel] " , LogLevel::USE_DEFAULT); +PrefixedLogger client_log ("" , LogLevel::USE_DEFAULT); +PrefixedLogger command_data_log ("" , LogLevel::USE_DEFAULT); +PrefixedLogger config_log ("[Config] " , LogLevel::USE_DEFAULT); +PrefixedLogger dns_server_log ("[DNSServer] " , LogLevel::USE_DEFAULT); +PrefixedLogger function_compiler_log ("[FunctionCompiler] ", LogLevel::USE_DEFAULT); +PrefixedLogger ip_stack_simulator_log("[IPStackSimulator] ", LogLevel::USE_DEFAULT); +PrefixedLogger license_log ("[LicenseManager] " , LogLevel::USE_DEFAULT); +PrefixedLogger lobby_log ("" , LogLevel::USE_DEFAULT); +PrefixedLogger player_data_log ("" , LogLevel::USE_DEFAULT); +PrefixedLogger proxy_server_log ("[ProxyServer] " , LogLevel::USE_DEFAULT); +PrefixedLogger server_log ("[Server] " , LogLevel::USE_DEFAULT); +PrefixedLogger static_game_data_log ("[StaticGameData] " , LogLevel::USE_DEFAULT); + +static LogLevel log_level_for_name(const string& name) { + static const unordered_map levels({ + {"debug", LogLevel::DEBUG}, + {"info", LogLevel::INFO}, + {"warning", LogLevel::WARNING}, + {"error", LogLevel::ERROR}, + {"disabled", LogLevel::DISABLED}, + }); + return levels.at(tolower(name)); +} + +static void set_log_level_from_json( + PrefixedLogger& log, shared_ptr d, const char* json_key) { + try { + log.min_level = log_level_for_name(d->at(json_key)->as_string()); + } catch (const JSONObject::key_error&) { } +} + +void set_log_levels_from_json(shared_ptr json) { + set_log_level_from_json(ax_messages_log , json, "AXMessages"); + set_log_level_from_json(channel_exceptions_log, json, "ChannelExceptions"); + set_log_level_from_json(client_log , json, "Clients"); + set_log_level_from_json(command_data_log , json, "CommandData"); + set_log_level_from_json(config_log , json, "Config"); + set_log_level_from_json(dns_server_log , json, "DNSServer"); + set_log_level_from_json(function_compiler_log , json, "FunctionCompiler"); + set_log_level_from_json(ip_stack_simulator_log, json, "IPStackSimulator"); + set_log_level_from_json(license_log , json, "LicenseManager"); + set_log_level_from_json(lobby_log , json, "Lobbies"); + set_log_level_from_json(player_data_log , json, "PlayerData"); + set_log_level_from_json(proxy_server_log , json, "ProxyServer"); + set_log_level_from_json(server_log , json, "GameServer"); + set_log_level_from_json(static_game_data_log , json, "StaticGameData"); +} diff --git a/src/Loggers.hh b/src/Loggers.hh new file mode 100644 index 00000000..dacb3570 --- /dev/null +++ b/src/Loggers.hh @@ -0,0 +1,23 @@ +#pragma once + +#include +#include + + + +extern PrefixedLogger ax_messages_log; +extern PrefixedLogger channel_exceptions_log; +extern PrefixedLogger client_log; +extern PrefixedLogger command_data_log; +extern PrefixedLogger config_log; +extern PrefixedLogger dns_server_log; +extern PrefixedLogger function_compiler_log; +extern PrefixedLogger ip_stack_simulator_log; +extern PrefixedLogger license_log; +extern PrefixedLogger lobby_log; +extern PrefixedLogger player_data_log; +extern PrefixedLogger proxy_server_log; +extern PrefixedLogger server_log; +extern PrefixedLogger static_game_data_log; + +void set_log_levels_from_json(std::shared_ptr json);