IRSOL
C++ code implementing socket server for interacting with Baumer camera.
main.cpp File Reference
#include "irsol/logging.hpp"
#include "irsol/macros.hpp"
#include <catch2/catch_all.hpp>
#include <iostream>
#include <string>
#include <vector>

Go to the source code of this file.

Classes

class  LoggingListener
 

Macros

#define CATCH_CONFIG_RUNNER
 

Functions

std::vector< std::string > configureLogging (int argc, char **argv)
 
int main (int argc, char **argv)
 

Macro Definition Documentation

◆ CATCH_CONFIG_RUNNER

#define CATCH_CONFIG_RUNNER

Definition at line 1 of file main.cpp.

Function Documentation

◆ configureLogging()

std::vector< std::string > configureLogging ( int  argc,
char **  argv 
)

Definition at line 52 of file main.cpp.

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 }
83 irsol::initLogging("logs/unit-tests.log", parsedLoglevel);
84 } else {
85 // Logging disabled
86 std::cout << "Logging disabled.\n";
87 irsol::initLogging("logs/unit-tests.log", spdlog::level::off);
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.
Definition logging.cpp:108

◆ main()

int main ( int  argc,
char **  argv 
)

Definition at line 94 of file main.cpp.

95{
96 auto filteredArgs = configureLogging(argc, argv);
97 // Convert to char* array for Catch2
98 std::vector<char*> filteredArgsForCatch;
99 for(auto& s : filteredArgs) {
100 filteredArgsForCatch.push_back(s.data());
101 }
102
103 int result = Catch::Session().run(
104 static_cast<int>(filteredArgsForCatch.size()), filteredArgsForCatch.data());
105
106 return result;
107}
auto result
std::vector< std::string > configureLogging(int argc, char **argv)
Definition main.cpp:52