File indexing completed on 2024-04-06 12:12:48
0001 #include "FWCore/Framework/interface/Event.h"
0002 #include "FWCore/Framework/interface/Frameworkfwd.h"
0003 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0004 #include "FWCore/Framework/interface/MakerMacros.h"
0005 #include "FWCore/MessageLogger/interface/LoggedErrorsSummary.h"
0006 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0007 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0008
0009 #include <sstream>
0010 #include <vector>
0011
0012 namespace edmtest {
0013
0014 class UTC_T1 : public edm::one::EDAnalyzer<> {
0015 public:
0016 explicit UTC_T1(edm::ParameterSet const& ps) : ev(0) {
0017 identifier = ps.getUntrackedParameter<int>("identifier", 99);
0018 }
0019
0020 void analyze(edm::Event const&, edm::EventSetup const&) override;
0021
0022 private:
0023 int identifier;
0024 int ev;
0025 };
0026
0027 class UTC_T2 : public edm::one::EDAnalyzer<> {
0028 public:
0029 explicit UTC_T2(edm::ParameterSet const& ps) : ev(0) {
0030 identifier = ps.getUntrackedParameter<int>("identifier", 98);
0031 }
0032
0033 void analyze(edm::Event const&, edm::EventSetup const&) override;
0034
0035 private:
0036 int identifier;
0037 int ev;
0038 void printLES(std::vector<edm::messagelogger::ErrorSummaryEntry> const& v);
0039 };
0040
0041 void UTC_T1::analyze(edm::Event const&, edm::EventSetup const&) {
0042 if (ev == 0)
0043 edm::EnableLoggedErrorsSummary();
0044 edm::LogError("cat_A") << "T1 error with identifier " << identifier << " event " << ev;
0045 edm::LogWarning("cat_A") << "T1 warning with identifier " << identifier << " event " << ev;
0046 edm::LogError("timer") << "T1 timer error with identifier " << identifier << " event " << ev;
0047 ev++;
0048 }
0049
0050 void UTC_T2::analyze(edm::Event const& iEvent, edm::EventSetup const&
0051 ) {
0052 const auto index = iEvent.streamID().value();
0053 edm::LogError("cat_A") << "T2 error with identifier " << identifier << " event " << ev;
0054 edm::LogWarning("cat_A") << "T2 warning with identifier " << identifier << " event " << ev;
0055 edm::LogError("timer") << "T2 timer error with identifier " << identifier << " event " << ev;
0056 if (ev == 9) {
0057 if (edm::FreshErrorsExist(index)) {
0058 edm::LogInfo("summary") << "At ev = " << ev << "FreshErrorsExist() returns true";
0059 } else {
0060 edm::LogError("summary") << "At ev = " << ev << "FreshErrorsExist() returns false"
0061 << " which is unexpected";
0062 }
0063 auto v = edm::LoggedErrorsSummary(index);
0064 printLES(v);
0065 }
0066 if (ev == 15) {
0067 if (edm::FreshErrorsExist(index)) {
0068 edm::LogInfo("summary") << "At ev = " << ev << "FreshErrorsExist() returns true";
0069 } else {
0070 edm::LogError("summary") << "At ev = " << ev << "FreshErrorsExist() returns false"
0071 << " which is unexpected";
0072 }
0073 auto v = edm::LoggedErrorsOnlySummary(index);
0074 printLES(v);
0075 }
0076 ev++;
0077 }
0078
0079 void UTC_T2::printLES(std::vector<edm::messagelogger::ErrorSummaryEntry> const& v) {
0080 std::ostringstream s;
0081 auto end = v.end();
0082 s << "Error Summary Vector with " << v.size() << " entries:\n";
0083 for (auto i = v.begin(); i != end; ++i) {
0084 s << "Category " << i->category << " Module " << i->module << " Severity " << (i->severity).getName()
0085 << " Count " << i->count << "\n";
0086 }
0087 s << "-------------------------- \n";
0088 edm::LogVerbatim("summary") << s.str();
0089 }
0090
0091 }
0092
0093 using edmtest::UTC_T1;
0094 using edmtest::UTC_T2;
0095 DEFINE_FWK_MODULE(UTC_T1);
0096 DEFINE_FWK_MODULE(UTC_T2);