示例#1
0
文件: log.cpp 项目: 3dcl/osghimmel
void StdLogOutput::print(const LogEntry &entry)
{
    //const QString timestamp(entry.timestamp().toString("yy-MM-dd::hh:mm:ss"));
    const QString timestamp(entry.timestamp().toString("hh:mm:ss"));

    switch(entry.type())
    {
    case LogEntry::DEBUG_LOG:
        std::cout << QString("%1 %2 %3: %4").arg(timestamp).arg(entry.file()).arg(entry.line()).arg(entry.message()).toStdString() << std::endl;
        break;
    case LogEntry::ERROR_LOG:
        std::cout << QString("%1 error: %2").arg(timestamp).arg(entry.message()).toStdString() << std::endl;
        break;
    case LogEntry::INFORMATION_LOG:
    case LogEntry::MESSAGE_LOG:
    case LogEntry::WORKFLOW_LOG:
        std::cout << QString("%1: %2").arg(timestamp).arg(entry.message()).toStdString() << std::endl;
        break;
    case LogEntry::WARNING_LOG:
        std::cout << QString("%1 warning: %2").arg(timestamp).arg(entry.message()).toStdString() << std::endl;
        break;
    case LogEntry::EMPTYLINE_LOG:
        std::cout << std::endl << std::endl;
        break;
    case LogEntry::UNDEFINED_LOG:
    default:
        break;
    }
}
示例#2
0
文件: log.cpp 项目: 3dcl/osghimmel
void FileLogOutput::print(const LogEntry &entry)
{
    const QString timestamp(entry.timestamp().toString("yy-MM-dd::hh:mm:ss"));
    //const QString timestamp(entry.timestamp().toString("hh:mm:ss"));

    switch(entry.type())
    {
    case LogEntry::INFORMATION_LOG:
        (*m_stream) << QString("%1:         %2\n").arg(timestamp).arg(entry.message());
        break;
    case LogEntry::WORKFLOW_LOG:
        (*m_stream) << QString("%1:       f %2\n").arg(timestamp).arg(entry.message());
        break;
    case LogEntry::WARNING_LOG:
        (*m_stream) << QString("%1 warning: %2\n").arg(timestamp).arg(entry.message());
        break;
    case LogEntry::ERROR_LOG:            
        (*m_stream) << QString("%1 error:   %2\n").arg(timestamp).arg(entry.message());
        break;
    case LogEntry::DEBUG_LOG:            
        (*m_stream) << QString("%1 %2 %3: %4\n").arg(timestamp).arg(entry.file()).arg(entry.line()).arg(entry.message());
        break;
    case LogEntry::EMPTYLINE_LOG:
        (*m_stream) << "\n";
        break;
    case LogEntry::MESSAGE_LOG:    
    case LogEntry::UNDEFINED_LOG:
    default:
        break;
    };

    m_stream->flush();
}
示例#3
0
void LogOutputWidget::print(const LogEntry &entry)
{
#ifdef _NDEBUG
    const QString timestamp(entry.timestamp().toString("hh:mm:ss"));
#else
    const QString timestamp(entry.timestamp().toString("hh:mm:ss:zzz"));
#endif
    //const QString timestamp(entry.timestamp().toString("hh:mm:ss"));

    m_swap->clear();
    m_swap->setFont(font());

    QString message = entry.message();

    switch(entry.type())
    {
    case LogEntry::INFORMATION_LOG:
        m_swap->textCursor().insertText(QString("%1: %2\n").arg(timestamp).arg(message), m_informationCharFormat);
        break;
    case LogEntry::WARNING_LOG:
        m_swap->textCursor().insertText(QString("%1: %2\n").arg(timestamp).arg(message), m_warningCharFormat);
        break;
    case LogEntry::ERROR_LOG:
        m_swap->textCursor().insertText(QString("%1: %2\n").arg(timestamp).arg(message), m_errorCharFormat);
        break;
    case LogEntry::DEBUG_LOG:
        m_swap->textCursor().insertText(QString("%1 %2 %3: %4\n").arg(timestamp).arg(entry.file()).arg(entry.line()).arg(message), m_debugCharFormat);
        break;
    case LogEntry::MESSAGE_LOG:
        m_swap->textCursor().insertText(QString("%1: %2\n").arg(timestamp).arg(message), m_messageCharFormat);
        break;
    case LogEntry::EMPTYLINE_LOG:
        m_swap->textCursor().insertText("\n");
        break;
    case LogEntry::WORKFLOW_LOG:
    case LogEntry::UNDEFINED_LOG:
    default:
        break;
    };

    QString htmlMessage = m_swap->toHtml();

    QRegExp reEmail("\\b([A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4})\\b");
    QRegExp reLink("\\b((ftp|http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?)\\b");

    int pos = 0;
    while((pos = reEmail.indexIn(message, pos)) != -1) 
    {
        pos += reEmail.matchedLength();
        const QString email = reEmail.capturedTexts()[0];
        htmlMessage.replace(email, QString("<a href =\"mailto:%1\">%1</a>").arg(email));
    }

    pos = 0;
    while((pos = reLink.indexIn(message, pos)) != -1) 
    {
        pos += reLink.matchedLength();
        const QString link = reLink.capturedTexts()[0];
        htmlMessage.replace(link, QString("<a href =\"%1\">%1</a>").arg(link));
    }

    m_cursor->insertHtml(htmlMessage);

    ensureCursorVisible();
    update();
}