53{
54 std::vector<std::string> filteredArgs;
55
56 std::string logLevelStr = "";
57 bool shouldSkipNext = false;
58 for(int i = 0; i < argc; ++i) {
59 if(shouldSkipNext) {
60 shouldSkipNext = false;
61 continue;
62 }
63 std::string arg = argv[i];
64 if(arg == "--log-level") {
65 if(i + 1 >= argc) {
66 std::cerr << "Error: --log-level requires an argument\n";
67 std::exit(1);
68 }
69 logLevelStr = argv[i + 1];
70 shouldSkipNext = true;
71 } else {
72 filteredArgs.emplace_back(argv[i]);
73 }
74 }
75
76 spdlog::level::level_enum parsedLoglevel;
77 if(logLevelStr != "") {
78 parsedLoglevel = spdlog::level::from_str(logLevelStr);
79 if(parsedLoglevel == spdlog::level::off) {
80 std::cerr << "Error: Invalid log level provided: '" << logLevelStr << "'\n";
81 std::exit(1);
82 }
84 } else {
85
86 std::cout << "Logging disabled.\n";
88 }
89
90 return filteredArgs;
91}
void initLogging(const char *fileSinkFilename="logs/irsol.log", std::optional< spdlog::level::level_enum > minLogLevel=std::nullopt)
Initializes the irsol logging system.