00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include <string>
00026 #include <sstream>
00027
00028 #include <boost/algorithm/string.hpp>
00029
00030 #include "WTerminalColor.h"
00031
00032 #include "WLogEntry.h"
00033
00034 LogLevel logLevelFromString( const std::string& str )
00035 {
00036
00037 std::string strLower = str;
00038 std::transform( str.begin(), str.end(), strLower.begin(), tolower );
00039 if( !strLower.compare( "debug" ) )
00040 {
00041 return LL_DEBUG;
00042 }
00043 else if( !strLower.compare( "info" ) )
00044 {
00045 return LL_INFO;
00046 }
00047 else if( !strLower.compare( "warning" ) )
00048 {
00049 return LL_WARNING;
00050 }
00051 else if( !strLower.compare( "error" ) )
00052 {
00053 return LL_ERROR;
00054 }
00055 return LL_DEBUG;
00056 }
00057
00058 WLogEntry::WLogEntry( std::string logTime, std::string message, LogLevel level, std::string source )
00059 : m_time( logTime ),
00060 m_message( message ),
00061 m_level( level ),
00062 m_source( source ),
00063 m_errorColor( WTerminalColor( WTerminalColor::Bold, WTerminalColor::FGRed ) ),
00064 m_infoColor( WTerminalColor( WTerminalColor::Bold, WTerminalColor::FGGreen ) ),
00065 m_debugColor( WTerminalColor( WTerminalColor::Bold, WTerminalColor::FGBlue ) ),
00066 m_warningColor( WTerminalColor( WTerminalColor::Bold, WTerminalColor::FGYellow ) ),
00067 m_sourceColor( WTerminalColor( WTerminalColor::Bold, WTerminalColor::FGMagenta ) ),
00068 m_timeColor( WTerminalColor( WTerminalColor::Bold, WTerminalColor::FGBlack ) ),
00069 m_messageColor( WTerminalColor() )
00070 {
00071 }
00072
00073 WLogEntry::~WLogEntry()
00074 {
00075 }
00076
00077 std::string WLogEntry::getLogString( std::string format, bool colors ) const
00078 {
00079 std::string s = format;
00080
00081 m_errorColor.setEnabled( colors );
00082 m_infoColor.setEnabled( colors );
00083 m_debugColor.setEnabled( colors );
00084 m_warningColor.setEnabled( colors );
00085 m_sourceColor.setEnabled( colors );
00086 m_timeColor.setEnabled( colors );
00087 m_messageColor.setEnabled( colors );
00088
00089 boost::ireplace_first( s, "%t", m_timeColor + m_time + !m_timeColor );
00090
00091 switch ( m_level )
00092 {
00093 case LL_DEBUG:
00094 boost::ireplace_first( s, "%l", m_debugColor + "DEBUG " + !m_debugColor );
00095 break;
00096 case LL_INFO:
00097 boost::ireplace_first( s, "%l", m_infoColor + "INFO " + !m_infoColor );
00098 break;
00099 case LL_WARNING:
00100 boost::ireplace_first( s, "%l", m_warningColor + "WARNING" + !m_warningColor );
00101 break;
00102 case LL_ERROR:
00103 boost::ireplace_first( s, "%l", m_errorColor + "ERROR " + !m_errorColor );
00104 break;
00105 default:
00106 break;
00107 }
00108
00109 boost::ireplace_first( s, "%m", m_messageColor + m_message + !m_messageColor );
00110
00111 boost::ireplace_first( s, "%s", m_sourceColor + m_source + !m_sourceColor );
00112
00113 return s;
00114 }
00115
00116 LogLevel WLogEntry::getLogLevel() const
00117 {
00118 return m_level;
00119 }
00120
00121 std::string WLogEntry::getMessage() const
00122 {
00123 return m_message;
00124 }
00125
00126 std::string WLogEntry::getSource() const
00127 {
00128 return m_source;
00129 }
00130
00131 std::string WLogEntry::getTime() const
00132 {
00133 return m_time;
00134 }
00135