artdaq_mfextensions  v1_05_00
qt_mf_msg.cc
1 #include "messagefacility/Utilities/ELseverityLevel.h"
2 
3 #include "messagefacility/MessageService/ELdestination.h"
4 #include "mfextensions/Receivers/qt_mf_msg.hh"
5 //#include "mfextensions/Extensions/MFExtensions.hh"
6 #include <iostream>
7 
8 size_t qt_mf_msg::sequence = 0;
9 
10 qt_mf_msg::qt_mf_msg(const std::string& hostname, const std::string& category, const std::string& application, pid_t pid, timeval time)
11  : text_()
12  , shortText_()
13  , color_()
14  , sev_(SERROR)
15  , host_(QString(hostname.c_str()))
16  , cat_(QString(category.c_str()))
17  , app_(QString((application + " (" + std::to_string(pid) + ")").c_str()))
18  , time_(time)
19  , seq_(++sequence)
20  , msg_("")
21  , application_(QString(application.c_str()).toHtmlEscaped())
22  , pid_(QString::number(pid)) {}
23 
24 void qt_mf_msg::setSeverity(mf::ELseverityLevel sev)
25 {
26  int sevid = sev.getLevel();
27 
28  switch (sevid)
29  {
30  case mf::ELseverityLevel::ELsev_success:
31  case mf::ELseverityLevel::ELsev_zeroSeverity:
32  case mf::ELseverityLevel::ELsev_unspecified:
33  sev_ = SDEBUG;
34  break;
35 
36  case mf::ELseverityLevel::ELsev_info:
37  sev_ = SINFO;
38  break;
39 
40  case mf::ELseverityLevel::ELsev_warning:
41  sev_ = SWARNING;
42  break;
43 
44  case mf::ELseverityLevel::ELsev_error:
45  case mf::ELseverityLevel::ELsev_severe:
46  case mf::ELseverityLevel::ELsev_highestSeverity:
47  sev_ = SERROR;
48  break;
49 
50  default:
51  break;
52  }
53 }
54 
55 void qt_mf_msg::setMessage(std::string const& prefix, int iteration, std::string const& msg)
56 {
57  sourceType_ = QString(prefix.c_str()).toHtmlEscaped();
58  sourceSequence_ = iteration;
59  msg_ = QString(msg.c_str()).toHtmlEscaped();
60 }
61 
63 {
64  text_ = QString("<font color=");
65 
66  QString sev_name = "Error";
67  switch (sev_)
68  {
69  case SDEBUG:
70  text_ += QString("#505050>");
71  color_.setRgb(80, 80, 80);
72  sev_name = "Debug";
73  break;
74 
75  case SINFO:
76  text_ += QString("#008000>");
77  color_.setRgb(0, 128, 0);
78  sev_name = "Info";
79  break;
80 
81  case SWARNING:
82  text_ += QString("#E08000>");
83  color_.setRgb(224, 128, 0);
84  sev_name = "Warning";
85  break;
86 
87  case SERROR:
88  text_ += QString("#FF0000>");
89  color_.setRgb(255, 0, 0);
90  sev_name = "Error";
91  break;
92 
93  default:
94  break;
95  }
96 
97  shortText_ = text_ + "<pre style=\"margin-top: 0; margin-bottom: 0;\">" + msg_ + "</pre></font>";
98 
99  size_t constexpr SIZE{144};
100  struct tm timebuf;
101  char ts[SIZE];
102  strftime(ts, sizeof(ts), "%d-%b-%Y %H:%M:%S %Z", localtime_r(&time_.tv_sec, &timebuf));
103 
104  text_ += QString("<pre style=\"width: 100%;\">") + sev_name + " / " + cat_.toHtmlEscaped() + "<br>" +
105  QString(ts).toHtmlEscaped() + "<br>" + host_.toHtmlEscaped() + " (" + hostaddr_ + ")<br>" + sourceType_ +
106  " " + QString::number(sourceSequence_) + " / " + "PID " + pid_;
107 
108  if (file_ != "") text_ += QString(" / ") + file_ + ":" + line_;
109 
110  text_ += QString("<br>") + application_ + " / " + module_ + " / " + eventID_ + "<br>" + msg_ + "</pre></font>";
111 }
void updateText()
Parse fields and create HTML string representing message
Definition: qt_mf_msg.cc:62
void setMessage(const std::string &prefix, int iteration, const std::string &msg)
Set the message
Definition: qt_mf_msg.cc:55
qt_mf_msg()
Default message constructor.
Definition: qt_mf_msg.hh:51
void setSeverity(mf::ELseverityLevel sev)
Set the Severity of the message (MF levels)
Definition: qt_mf_msg.cc:24