Sha256: 8bdbfd4e920bfcb8ff29cc363ebd51ec8831878f565cba827750e0e84bb85e18

Contents?: true

Size: 2 KB

Versions: 51

Compression:

Stored size: 2 KB

Contents

#include "RhoLog.h"
#include "common/RhoFilePath.h"
#include "common/RhoTime.h"
#include "common/RhoSystem.h"

rho::LogCategory __rhoCurrentCategory;

const char*const LogSeverityNames[L_NUM_SEVERITIES] = {
  "TRACE", "INFO", "WARNING", "ERROR", "FATAL"
};

namespace rho {

LogMessage::LogMessage(const char* file, int line, LogSeverity severity, LogSettings& oSettings, const LogCategory& category ) : 
    m_severity(severity), m_category(category), m_oLogConf(oSettings){
    if ( getLogConf().isLogPrefix() && isEnabled() )
        addPrefix( file, line );
}

bool LogMessage::isEnabled()const{
    if ( m_severity >= getLogConf().getMinSeverity() ){
        if ( m_category.isEmpty() || m_severity >= L_ERROR )
            return true;

        return getLogConf().isCategoryEnabled(m_category);
    }

    return false;
}

void LogMessage::addPrefix(const char* file, int line){
    //(log level, local date time, thread_id, file basename, line)
    //I time f5d4fbb0 RhoLog.cpp:11|

    if ( m_severity == L_FATAL )
        *this + LogSeverityNames[m_severity];
    else
        *this + LogSeverityNames[m_severity][0];

    *this + " " + common::CLocalTime().toString(true) + ' ' +
        LOGFMT("%08x") + common::CSystem().getThreadID() + ' ';
    
    if ( m_category.isEmpty() )
        *this +  LOGFMT("%15s") + common::CFilePath(file).getBaseName() + ':' + LOGFMT("%4d") + line;
    else
        *this + LOGFMT("%20s") + m_category.getName();

    *this  + "| ";
}

void LogMessage::flushLog(){
    if ( !isEnabled() )
        return;

    if ( m_strMessage.length() > 0 ){
        if ( m_strMessage[m_strMessage.length()-1] != '\n' )
            m_strMessage += LOG_NEWLINE;
        //else if ( m_strMessage.length() > 1 && m_strMessage[m_strMessage.length()-2] == '\r' )
        //    m_strMessage.erase(m_strMessage.length()-2,1);
    }

    getLogConf().sinkLogMessage( m_strMessage );

    if ( m_severity == L_FATAL ) //TODO: may be save fatal info in separate place
        common::CRhoFatalError().processFatalError();
}

}

Version data entries

51 entries across 51 versions & 1 rubygems

Version Path
rhodes-3.0.2 platform/shared/logging/RhoLog.cpp
rhodes-3.0.2.beta.1 platform/shared/logging/RhoLog.cpp
rhodes-3.0.1 platform/shared/logging/RhoLog.cpp
rhodes-3.0.1.beta.8 platform/shared/logging/RhoLog.cpp
rhodes-3.0.1.beta.7 platform/shared/logging/RhoLog.cpp
rhodes-3.0.1.beta.6 platform/shared/logging/RhoLog.cpp
rhodes-3.0.1.beta.5 platform/shared/logging/RhoLog.cpp
rhodes-3.0.1.beta.4 platform/shared/logging/RhoLog.cpp
rhodes-3.0.1.beta.3 platform/shared/logging/RhoLog.cpp
rhodes-3.0.1.beta.2 platform/shared/logging/RhoLog.cpp
rhodes-3.0.0 platform/shared/logging/RhoLog.cpp
rhodes-3.0.0.beta.7 platform/shared/logging/RhoLog.cpp
rhodes-3.0.0.beta.6 platform/shared/logging/RhoLog.cpp
rhodes-3.0.0.beta.5 platform/shared/logging/RhoLog.cpp
rhodes-3.0.0.beta.4 platform/shared/logging/RhoLog.cpp
rhodes-3.0.0.beta.3 platform/shared/logging/RhoLog.cpp
rhodes-3.0.0.beta.2 platform/shared/logging/RhoLog.cpp
rhodes-3.0.0.beta.1 platform/shared/logging/RhoLog.cpp
rhodes-2.4.1 platform/shared/logging/RhoLog.cpp
rhodes-2.4.1.beta.1 platform/shared/logging/RhoLog.cpp