1 #include "cetlib/PluginTypeDeducer.h"
2 #include "fhiclcpp/ParameterSet.h"
3 #include "fhiclcpp/types/ConfigurationTable.h"
5 #include "messagefacility/MessageService/ELdestination.h"
6 #include "messagefacility/Utilities/ELseverityLevel.h"
7 #include "messagefacility/Utilities/exception.h"
10 #include "cetlib/compiler_macros.h"
13 using mf::ELseverityLevel;
15 using mf::service::ELdestination;
32 fhicl::Name{
"bell_on_error"}, fhicl::Comment{
"Whether to ring the system bell on error messages"},
true};
35 fhicl::Atom<bool>{fhicl::Name{
"blink_error_messages"},
36 fhicl::Comment{
"Whether to print error messages with blinking text"},
false};
38 fhicl::Atom<std::string>
errorColor = fhicl::Atom<std::string>{
39 fhicl::Name{
"error_ansi_color"}, fhicl::Comment{
"ANSI Color string for Error Messages"},
"\033[1m\033[91m"};
42 fhicl::Name{
"warning_ansi_color"}, fhicl::Comment{
"ANSI Color string for Warning Messages"},
"\033[1m\033[93m"};
44 fhicl::Atom<std::string>
infoColor = fhicl::Atom<std::string>{
45 fhicl::Name{
"info_ansi_color"}, fhicl::Comment{
"ANSI Color string for Info Messages"},
"\033[92m"};
47 fhicl::Atom<std::string>
debugColor = fhicl::Atom<std::string>{
48 fhicl::Name{
"debug_ansi_color"}, fhicl::Comment{
"ANSI Color string for Debug Messages"},
"\033[39m"};
65 void routePayload(
const std::ostringstream& o,
const ErrorObj& msg)
override;
70 std::string errorColor_;
71 std::string warningColor_;
72 std::string infoColor_;
73 std::string debugColor_;
85 : ELdestination(pset().elDestConfig()), bellError_(pset().bellOnError()), blinkError_(pset().blinkOnError()), errorColor_(pset().errorColor()), warningColor_(pset().warningColor()), infoColor_(pset().infoColor()), debugColor_(pset().debugColor())
95 const auto& xid = msg.xid();
96 auto level = xid.severity().getLevel();
100 case mf::ELseverityLevel::ELsev_success:
101 case mf::ELseverityLevel::ELsev_zeroSeverity:
102 case mf::ELseverityLevel::ELsev_unspecified:
103 std::cout << debugColor_;
106 case mf::ELseverityLevel::ELsev_info:
107 std::cout << infoColor_;
110 case mf::ELseverityLevel::ELsev_warning:
111 std::cout << warningColor_;
114 case mf::ELseverityLevel::ELsev_error:
115 case mf::ELseverityLevel::ELsev_severe:
116 case mf::ELseverityLevel::ELsev_highestSeverity:
123 std::cout <<
"\033[5m";
125 std::cout << errorColor_;
131 std::cout << oss.str();
132 std::cout <<
"\033[0m" << std::endl;
142 #ifndef EXTERN_C_FUNC_DECLARE_START
143 #define EXTERN_C_FUNC_DECLARE_START extern "C" {
146 EXTERN_C_FUNC_DECLARE_START
147 auto makePlugin(
const std::string& ,
const fhicl::ParameterSet& pset)
149 return std::make_unique<mfplugins::ELANSI>(pset);
153 DEFINE_BASIC_PLUGINTYPE_FUNC(mf::service::ELdestination)
ELANSI(Parameters const &pset)
ELANSI Constructor
Configuration parameters for ELANSI.
fhicl::Atom< std::string > debugColor
"debug_ansi_color" (Default: "\033[39m"): ANSI Color string for ErrDebugor Messages ...
fhicl::Atom< std::string > errorColor
"error_ansi_color" (Default: "\033[1m\033[91m"): ANSI Color string for Error Messages ...
fhicl::Atom< bool > bellOnError
"bell_on_error" (Default: true): Whether to ring the system bell on error messages ...
fhicl::TableFragment< ELdestination::Config > elDestConfig
ELdestination common config parameters.
Message Facility destination which colorizes the console output
fhicl::Atom< bool > blinkOnError
"blink_error_messages" (Default: false): Whether to print error messages with blinking text ...
fhicl::Atom< std::string > infoColor
"info_ansi_color" (Default: "\033[92m"): ANSI Color string for Info Messages
fhicl::Atom< std::string > warningColor
"warning_ansi_color" (Default: "\033[1m\033[93m"): ANSI Color string for Warning Messages ...
fhicl::WrappedTable< Config > Parameters
Used for ParameterSet validation.
void routePayload(const std::ostringstream &o, const ErrorObj &msg) override
Serialize a MessageFacility message to the output.