Пример #1
0
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++;
}
Пример #2
0
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();
}
Пример #3
0
LoggerMessage LoggerRef::operator()(Level level, const std::string& color) const {
  return LoggerMessage(*logger, category, level, color);
}