00001 #include "messagefacility/Utilities/ELseverityLevel.h"
00002
00003 #include "mfextensions/Receivers/qt_mf_msg.hh"
00004 #include "messagefacility/MessageService/ELdestination.h"
00005
00006 #include <iostream>
00007
00008 size_t qt_mf_msg::sequence = 0;
00009
00010 qt_mf_msg::qt_mf_msg(std::string hostname, std::string category, std::string application, pid_t pid, timeval time)
00011 : text_()
00012 , shortText_()
00013 , color_()
00014 , sev_(SERROR)
00015 , host_(QString(hostname.c_str()))
00016 , cat_(QString(category.c_str()))
00017 , app_(QString((application + " (" + std::to_string(pid) + ")").c_str()))
00018 , time_(time)
00019 , seq_(++sequence)
00020 , msg_("")
00021 , application_(QString(application.c_str()).toHtmlEscaped())
00022 , pid_(QString::number(pid))
00023 {}
00024
00025 void qt_mf_msg::setSeverity(mf::ELseverityLevel sev)
00026 {
00027 int sevid = sev.getLevel();
00028
00029 switch (sevid)
00030 {
00031 case mf::ELseverityLevel::ELsev_success:
00032 case mf::ELseverityLevel::ELsev_zeroSeverity:
00033 case mf::ELseverityLevel::ELsev_unspecified:
00034 sev_ = SDEBUG;
00035 break;
00036
00037 case mf::ELseverityLevel::ELsev_info:
00038 sev_ = SINFO;
00039 break;
00040
00041 case mf::ELseverityLevel::ELsev_warning:
00042 sev_ = SWARNING;
00043 break;
00044
00045 case mf::ELseverityLevel::ELsev_error:
00046 case mf::ELseverityLevel::ELsev_severe:
00047 case mf::ELseverityLevel::ELsev_highestSeverity:
00048 sev_ = SERROR;
00049 break;
00050
00051 default: break;
00052 }
00053 }
00054
00055 void qt_mf_msg::setMessage(std::string prefix, int iteration, std::string msg)
00056 {
00057 sourceType_ = QString(prefix.c_str()).toHtmlEscaped();
00058 sourceSequence_ = iteration;
00059 msg_ = QString(msg.c_str()).toHtmlEscaped();
00060 }
00061
00062 void qt_mf_msg::updateText()
00063 {
00064 text_ = QString("<font color=");
00065
00066 QString sev_name = "Error";
00067 switch (sev_)
00068 {
00069 case SDEBUG:
00070 text_ += QString("#505050>");
00071 color_.setRgb(80, 80, 80);
00072 sev_name = "Debug";
00073 break;
00074
00075 case SINFO:
00076 text_ += QString("#008000>");
00077 color_.setRgb(0, 128, 0);
00078 sev_name = "Info";
00079 break;
00080
00081 case SWARNING:
00082 text_ += QString("#E08000>");
00083 color_.setRgb(224, 128, 0);
00084 sev_name = "Warning";
00085 break;
00086
00087 case SERROR:
00088 text_ += QString("#FF0000>");
00089 color_.setRgb(255, 0, 0);
00090 sev_name = "Error";
00091 break;
00092
00093 default: break;
00094 }
00095
00096 shortText_ = QString(text_);
00097 shortText_ += QString("<pre style=\"margin-top: 0; margin-bottom: 0;\">");
00098 shortText_ += msg_;
00099 shortText_ += QString("</pre></font>");
00100
00101
00102 size_t constexpr SIZE{ 144 };
00103 struct tm timebuf;
00104 char ts[SIZE];
00105 strftime(ts, sizeof(ts), "%d-%b-%Y %H:%M:%S %Z", localtime_r(&time_.tv_sec, &timebuf));
00106
00107
00108 text_ += QString("<pre style=\"width: 100%;\">")
00109 + sev_name.toHtmlEscaped() + " / "
00110 + cat_.toHtmlEscaped() + "<br>"
00111 + QString(ts).toHtmlEscaped() + "<br>"
00112 + host_.toHtmlEscaped() + " ("
00113 + hostaddr_ + ")<br>"
00114 + sourceType_ + " " + QString::number(sourceSequence_) + " / "
00115 + "PID " + pid_;
00116
00117 if (file_ != "")
00118 text_ += QString(" / ") + file_ + QString(":") + line_;
00119
00120 text_ += QString("<br>")
00121 + application_ + " / "
00122 + module_ + " / "
00123 + eventID_ + "<br>"
00124 + msg_
00125 + QString("</pre>");
00126
00127 text_ += QString("</font>");
00128
00129 }