00001 00034 #include "linden_common.h" 00035 #include "lllog.h" 00036 00037 #include "llapp.h" 00038 #include "llsd.h" 00039 #include "llsdserialize.h" 00040 00041 00042 class LLLogImpl 00043 { 00044 public: 00045 LLLogImpl(LLApp* app) : mApp(app) {} 00046 ~LLLogImpl() {} 00047 00048 void log(const std::string message, LLSD& info); 00049 bool useLegacyLogMessage(const std::string message); 00050 00051 private: 00052 LLApp* mApp; 00053 }; 00054 00055 00056 //@brief Function to log a message to syslog for streambase to collect. 00057 void LLLogImpl::log(const std::string message, LLSD& info) 00058 { 00059 static S32 sequence = 0; 00060 LLSD log_config = mApp->getOption("log-messages"); 00061 if (log_config.has(message)) 00062 { 00063 LLSD message_config = log_config[message]; 00064 if (message_config.has("use-syslog")) 00065 { 00066 if (! message_config["use-syslog"].asBoolean()) 00067 { 00068 return; 00069 } 00070 } 00071 } 00072 llinfos << "LLLOGMESSAGE (" << (sequence++) << ") " << message 00073 << " " << LLSDNotationStreamer(info) << llendl; 00074 } 00075 00076 //@brief Function to check if specified legacy log message should be sent. 00077 bool LLLogImpl::useLegacyLogMessage(const std::string message) 00078 { 00079 LLSD log_config = mApp->getOption("log-messages"); 00080 if (log_config.has(message)) 00081 { 00082 LLSD message_config = log_config[message]; 00083 if (message_config.has("use-legacy")) 00084 { 00085 return message_config["use-legacy"].asBoolean(); 00086 } 00087 } 00088 return true; 00089 } 00090 00091 00092 LLLog::LLLog(LLApp* app) 00093 { 00094 mImpl = new LLLogImpl(app); 00095 } 00096 00097 LLLog::~LLLog() 00098 { 00099 delete mImpl; 00100 mImpl = NULL; 00101 } 00102 00103 void LLLog::log(const std::string message, LLSD& info) 00104 { 00105 if (mImpl) mImpl->log(message, info); 00106 } 00107 00108 bool LLLog::useLegacyLogMessage(const std::string message) 00109 { 00110 if (mImpl) 00111 { 00112 return mImpl->useLegacyLogMessage(message); 00113 } 00114 return true; 00115 } 00116