void Logger::message(int level, const std::string& message) { if(!level || this->level < level) return; if(stream != 0) { fprintf(stream, "%s: %s\n", log_levels[level].c_str(), message.c_str()); } if(!hist_capacity) return; while(history.size() >= hist_capacity) { history.pop_front(); } history.push_back(LoggerMessage(level, message)); message_count++; }
LoggerMessage LoggerMessage::fromString(const QString &standardString) { //Interpreter for standard string //String defined in QString cast please check for changes LoggerMessage msg; QString substr; //stores the remaining string //gets Date and Time string by defintion left of the second space QString timeStr = standardString.left(standardString.indexOf(" ",standardString.indexOf(" ")+1)); QString format = "HH:mm:ss dd.MM.yyyy"; msg.SentAt = QDateTime::fromString(timeStr,format); if(msg.SentAt.isValid()) { //gets Sender string by definition inside the first [] substr = standardString.right(standardString.length() - standardString.indexOf("[")); QString sender = substr.mid(substr.indexOf("[")+1,substr.indexOf("]")-substr.indexOf("[")-1); if(!(sender.isNull())) { msg.SenderStr = sender; //extract type string and try to convert it to enum substr = substr.right(substr.length() - substr.indexOf("]")-2); QString typestr = substr.left(substr.indexOf(":")); msg.Type = LoggerMessage::getTypeFromString(typestr); //extract message msg.MessageStr = substr.right(substr.length() - substr.indexOf(":")-2); //everything okay string valid return msg; } } //something went wrong... probebaly the string is not standard return LoggerMessage(); }
LoggerMessage LoggerRef::operator()(Level level, const std::string& color) const { return LoggerMessage(*logger, category, level, color); }