diff --git a/elog/elog.cpp b/elog/elog.cpp new file mode 100644 index 0000000..c2434cc --- /dev/null +++ b/elog/elog.cpp @@ -0,0 +1,142 @@ +/** + * @author Edouard DUPIN + * + * @copyright 2011, Edouard DUPIN, all right reserved + * + * @license APACHE v2.0 (see license file) + */ + +#include +#include +#include + +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 split(const std::string& _input, char _val) { + std::vector 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 + +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); +} + diff --git a/lutin_elog.py b/lutin_elog.py index 2879935..ec5cd46 100644 --- a/lutin_elog.py +++ b/lutin_elog.py @@ -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":