[DEV] add configuration with argument
This commit is contained in:
parent
7b80e94528
commit
1ef2b5d0a0
142
elog/elog.cpp
Normal file
142
elog/elog.cpp
Normal file
@ -0,0 +1,142 @@
|
||||
/**
|
||||
* @author Edouard DUPIN
|
||||
*
|
||||
* @copyright 2011, Edouard DUPIN, all right reserved
|
||||
*
|
||||
* @license APACHE v2.0 (see license file)
|
||||
*/
|
||||
|
||||
#include <elog/log.h>
|
||||
#include <elog/elog.h>
|
||||
#include <elog/debug.h>
|
||||
|
||||
static elog::level getLogLevel(const std::string& _value) {
|
||||
if (_value == "0") {
|
||||
return elog::logLevelNone;
|
||||
} else if (_value == "1") {
|
||||
return elog::logLevelCritical;
|
||||
} else if (_value == "2") {
|
||||
return elog::logLevelError;
|
||||
} else if (_value == "3") {
|
||||
return elog::logLevelWarning;
|
||||
} else if (_value == "4") {
|
||||
return elog::logLevelInfo;
|
||||
} else if (_value == "5") {
|
||||
return elog::logLevelDebug;
|
||||
} else if (_value == "6") {
|
||||
return elog::logLevelVerbose;
|
||||
}
|
||||
ELOG_ERROR("Unknow log level : " << _value);
|
||||
return elog::logLevelVerbose;
|
||||
}
|
||||
|
||||
static bool startWith(const std::string& _obj, const std::string& _val) {
|
||||
if (_val.size() == 0) {
|
||||
return false;
|
||||
}
|
||||
if (_val.size() > _obj.size()) {
|
||||
return false;
|
||||
}
|
||||
for( size_t iii = 0;
|
||||
iii < _val.size();
|
||||
iii++) {
|
||||
if (std::tolower(_val[iii]) != std::tolower(_obj[iii])) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
static std::vector<std::string> split(const std::string& _input, char _val) {
|
||||
std::vector<std::string> list;
|
||||
size_t lastStartPos = 0;
|
||||
for(size_t iii=0; iii<_input.size(); iii++) {
|
||||
if (_input[iii]==_val) {
|
||||
list.push_back(std::string(_input, lastStartPos, iii - lastStartPos));
|
||||
lastStartPos = iii+1;
|
||||
}
|
||||
}
|
||||
if (lastStartPos<_input.size()) {
|
||||
list.push_back(std::string(_input, lastStartPos));
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
void elog::init(int _argc, const char** _argv) {
|
||||
ELOG_INFO("E-log system init (BEGIN)");
|
||||
for (int32_t iii=0; iii<_argc ; ++iii) {
|
||||
std::string data = _argv[iii];
|
||||
if (startWith(data, "--elog-level=")) {
|
||||
elog::setLevel(getLogLevel(std::string(data.begin()+13, data.end())));
|
||||
} else if (startWith(data, "--elog-color")) {
|
||||
elog::setColor(true);
|
||||
} else if (startWith(data, "--elog-no-color")) {
|
||||
elog::setColor(false);
|
||||
} else if (startWith(data, "--elog-config=")) {
|
||||
std::string value(data.begin()+17, data.end());
|
||||
elog::setTime(false);
|
||||
elog::setLine(false);
|
||||
elog::setFunction(false);
|
||||
elog::setLibName(false);
|
||||
elog::setThreadId(false);
|
||||
elog::setThreadNameEnable(false);
|
||||
for (size_t iii=0; iii<value.size(); ++iii) {
|
||||
if (value[iii] == 't') {
|
||||
elog::setTime(true);
|
||||
} else if (value[iii] == 'T') {
|
||||
elog::setThreadId(true);
|
||||
} else if (value[iii] == 'N') {
|
||||
elog::setThreadNameEnable(true);
|
||||
} else if (value[iii] == 'L') {
|
||||
elog::setLine(true);
|
||||
} else if (value[iii] == 'l') {
|
||||
elog::setLibName(true);
|
||||
} else if (value[iii] == 'f') {
|
||||
elog::setFunction(true);
|
||||
} else {
|
||||
ELOG_ERROR("In program argument: --elog-config= , the value '" << value[iii] << "' is not supported");
|
||||
}
|
||||
}
|
||||
} else if (startWith(data, "--elog-lib=")) {
|
||||
std::string value(data.begin()+14, data.end());
|
||||
std::vector<std::string> list = split(value, ':');
|
||||
if (list.size() != 2) {
|
||||
ELOG_ERROR("Can not set the --elog-lib= with value='" << value << "' not formated name:X");
|
||||
continue;
|
||||
}
|
||||
elog::setLevel(list[0], getLogLevel(list[1]));
|
||||
} else if ( data == "-h"
|
||||
|| data == "--help") {
|
||||
ELOG_PRINT("elog - help : ");
|
||||
ELOG_PRINT(" " << _argv[0] << " [options]");
|
||||
ELOG_PRINT(" --elog-level= Change the default log level (set all Log lovel):");
|
||||
ELOG_PRINT(" 0: debug None (default in release)");
|
||||
ELOG_PRINT(" 1: debug Critical");
|
||||
ELOG_PRINT(" 2: debug Error");
|
||||
ELOG_PRINT(" 3: debug Warning");
|
||||
ELOG_PRINT(" 4: debug Info (default in debug)");
|
||||
ELOG_PRINT(" 5: debug Debug");
|
||||
ELOG_PRINT(" 6: debug Verbose");
|
||||
ELOG_PRINT(" --elog-lib=name:X Set a library specific level:");
|
||||
ELOG_PRINT(" name Name of the library");
|
||||
ELOG_PRINT(" X Log level to set [0..6]");
|
||||
ELOG_PRINT(" --elog-color Enable color in log (default in Linux/debug)");
|
||||
ELOG_PRINT(" --elog-no-color Disable color in log (default in Linux/release and Other)");
|
||||
ELOG_PRINT(" --elog-config= Configure the Log interface");
|
||||
ELOG_PRINT(" t: diplay time");
|
||||
ELOG_PRINT(" T: diplay thread id");
|
||||
ELOG_PRINT(" N: diplay thread name");
|
||||
ELOG_PRINT(" L: diplay line number");
|
||||
ELOG_PRINT(" l: diplay lib name");
|
||||
ELOG_PRINT(" f: diplay fundtion name");
|
||||
ELOG_PRINT(" -h/--help: this help");
|
||||
ELOG_PRINT(" example:");
|
||||
ELOG_PRINT(" " << _argv[0] << " --elog-color --elog-level=2 --elog-lib=etk:5 --elog-lib=appl:6 --elog-config=NLlf");
|
||||
} else if (startWith(data, "--elog")) {
|
||||
ELOG_ERROR("Can not parse the argument : '" << data << "'");
|
||||
}
|
||||
}
|
||||
ELOG_INFO("E-LOG system init (END)");
|
||||
}
|
||||
|
||||
|
20
elog/elog.h
Normal file
20
elog/elog.h
Normal file
@ -0,0 +1,20 @@
|
||||
/**
|
||||
* @author Edouard DUPIN
|
||||
*
|
||||
* @copyright 2011, Edouard DUPIN, all right reserved
|
||||
*
|
||||
* @license APACHE v2.0 (see license file)
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace elog {
|
||||
/**
|
||||
* @brief Initialize elog
|
||||
* @param[in] _argc Number of argument list
|
||||
* @param[in] _argv List of arguments
|
||||
*/
|
||||
void init(int _argc, const char** _argv);
|
||||
}
|
||||
|
@ -30,7 +30,8 @@ def create(target, module_name):
|
||||
# add the file to compile:
|
||||
my_module.add_src_file([
|
||||
'elog/debug.cpp',
|
||||
'elog/log.cpp'
|
||||
'elog/log.cpp',
|
||||
'elog/elog.cpp'
|
||||
])
|
||||
|
||||
if target.name=="IOs":
|
||||
@ -38,6 +39,7 @@ def create(target, module_name):
|
||||
|
||||
my_module.add_header_file([
|
||||
'elog/log.h',
|
||||
'elog/elog.h'
|
||||
])
|
||||
|
||||
if target.config["mode"] == "debug":
|
||||
|
Loading…
x
Reference in New Issue
Block a user