LSSTApplications  10.0+286,10.0+36,10.0+46,10.0-2-g4f67435,10.1+152,10.1+37,11.0,11.0+1,11.0-1-g47edd16,11.0-1-g60db491,11.0-1-g7418c06,11.0-2-g04d2804,11.0-2-g68503cd,11.0-2-g818369d,11.0-2-gb8b8ce7
LSSTDataManagementBasePackage
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
lsst::ctrl::events::EventAppender Class Reference

log4cxx appender class which sends logging messages out on the event stream More...

#include <EventAppender.h>

Inheritance diagram for lsst::ctrl::events::EventAppender:

Public Member Functions

 EventAppender ()
 
 ~EventAppender ()
 destructor More...
 
virtual void setOption (const LogString &option, const LogString &value)
 log4cxx methods for setting options; for this class options are BROKER - host name of event broker (required) PORT - port number on which the event broker is listening (optional) TOPIC - topic name on which to send logging messages (optional) More...
 
virtual void activateOptions (log4cxx::helpers::Pool &p)
 prepares EventAppender for use More...
 
void append (const spi::LoggingEventPtr &event, log4cxx::helpers::Pool &p)
 handles a log event. For this appender, this means sending an event to the logging topic. More...
 
void close ()
 shuts down the appender More...
 
bool requiresLayout () const
 this appender does not require a layout to format the text More...
 

Protected Member Functions

lsst::ctrl::events::EventTransmittergetTransmitter ()
 

Protected Attributes

lsst::ctrl::events::EventTransmitter_transmitter
 
LogString _broker
 
LogString _topic
 
int _port
 
LogString _runid
 

Detailed Description

log4cxx appender class which sends logging messages out on the event stream

Definition at line 75 of file EventAppender.h.

Constructor & Destructor Documentation

lsst::ctrl::events::EventAppender::EventAppender ( )

Definition at line 62 of file EventAppender.cc.

lsst::ctrl::events::EventAppender::~EventAppender ( )

destructor

Definition at line 70 of file EventAppender.cc.

70  {
71  if (_transmitter != NULL)
72  delete _transmitter;
73  _transmitter = NULL;
74 }
lsst::ctrl::events::EventTransmitter * _transmitter

Member Function Documentation

void lsst::ctrl::events::EventAppender::activateOptions ( log4cxx::helpers::Pool &  p)
virtual

prepares EventAppender for use

Definition at line 90 of file EventAppender.cc.

91 {
92  if (_broker.empty()) {
93  LogLog::error((LogString) LOG4CXX_STR("Appender requires broker option to be specified"));
94  return;
95  }
96  try {
97  _transmitter = new EventTransmitter(_broker, _topic, _port);
98  } catch (pexExceptions::RuntimeError& rte) {
99  std::ostringstream msg;
100  msg << "Couldn't reach broker " << _broker << " at port " << _port;
101  LogLog::error((LogString) LOG4CXX_STR(msg.str()));
102  _transmitter = NULL;
103  }
104 }
lsst::ctrl::events::EventTransmitter * _transmitter
def error
Definition: log.py:108
void lsst::ctrl::events::EventAppender::append ( const spi::LoggingEventPtr &  event,
log4cxx::helpers::Pool &  p 
)

handles a log event. For this appender, this means sending an event to the logging topic.

Definition at line 118 of file EventAppender.cc.

118  {
119  PropertySet::Ptr psp(new PropertySet);
120 
121  psp->set("logger", event->getLoggerName());
122  psp->set("message", event->getMessage());
123  psp->set("timestamp", event->getTimeStamp());
124  psp->set("threadname", event->getThreadName());
125  psp->set("level", event->getLevel()->toInt());
126 
127  spi::LocationInfo location = event->getLocationInformation();
128 
129  PropertySet::Ptr loc(new PropertySet);
130  loc->set("filename", location.getFileName());
131  loc->set("classname", location.getClassName());
132  loc->set("methodname", location.getMethodName());
133  loc->set("linenumber", location.getLineNumber());
134 
135  psp->set("location", loc);
136 
138  if (_runid.empty()) {
139  e = ctrlEvents::Event(*psp);
140  } else {
141  e = ctrlEvents::Event(_runid, *psp);
142  }
143 
144  EventTransmitter *transmitter = getTransmitter();
145 
146  if (_transmitter == NULL)
147  return;
148 
149  try {
150  transmitter->publishEvent(e);
151  } catch (Exception& e) {
152  LogLog::error((LogString) LOG4CXX_STR("event transmitter failed"));
153  delete _transmitter;
154  _transmitter = NULL;
155  }
156 }
boost::shared_ptr< PropertySet > Ptr
Definition: PropertySet.h:90
lsst::ctrl::events::EventTransmitter * _transmitter
def error
Definition: log.py:108
lsst::ctrl::events::EventTransmitter * getTransmitter()
Representation of an LSST Event.
Definition: Event.h:62
Class for storing generic metadata.
Definition: PropertySet.h:82
void lsst::ctrl::events::EventAppender::close ( )

shuts down the appender

Definition at line 158 of file EventAppender.cc.

158  {
159  if (this->closed)
160  return;
161  this->closed = true;
162 }
EventTransmitter * lsst::ctrl::events::EventAppender::getTransmitter ( )
protected

Definition at line 107 of file EventAppender.cc.

107  {
108  if (_transmitter == NULL) {
109  try {
110  _transmitter = new EventTransmitter(_broker, _topic, _port);
111  } catch (Exception& e) {
112  }
113  }
114  return _transmitter;
115 }
lsst::ctrl::events::EventTransmitter * _transmitter
bool lsst::ctrl::events::EventAppender::requiresLayout ( ) const
inline

this appender does not require a layout to format the text

Returns
always returns false

Definition at line 119 of file EventAppender.h.

119 { return false; }
void lsst::ctrl::events::EventAppender::setOption ( const LogString &  option,
const LogString &  value 
)
virtual

log4cxx methods for setting options; for this class options are BROKER - host name of event broker (required) PORT - port number on which the event broker is listening (optional) TOPIC - topic name on which to send logging messages (optional)

Parameters
optionoption name
valueoption value

Definition at line 76 of file EventAppender.cc.

76  {
77  if (StringHelper::equalsIgnoreCase(option, LOG4CXX_STR("BROKER"), LOG4CXX_STR("broker"))) {
78  _broker = value;
79  } else if (StringHelper::equalsIgnoreCase(option, LOG4CXX_STR("PORT"), LOG4CXX_STR("port"))) {
80  _port = atoi(value.c_str());
81  } else if (StringHelper::equalsIgnoreCase(option, LOG4CXX_STR("TOPIC"), LOG4CXX_STR("topic"))) {
82  _topic = value;
83  } else if (StringHelper::equalsIgnoreCase(option, LOG4CXX_STR("RUNID"), LOG4CXX_STR("runid"))) {
84  _runid = value;
85  } else {
86  AppenderSkeleton::setOption(option, value);
87  }
88 }

Member Data Documentation

LogString lsst::ctrl::events::EventAppender::_broker
protected

Definition at line 125 of file EventAppender.h.

int lsst::ctrl::events::EventAppender::_port
protected

Definition at line 127 of file EventAppender.h.

LogString lsst::ctrl::events::EventAppender::_runid
protected

Definition at line 128 of file EventAppender.h.

LogString lsst::ctrl::events::EventAppender::_topic
protected

Definition at line 126 of file EventAppender.h.

lsst::ctrl::events::EventTransmitter* lsst::ctrl::events::EventAppender::_transmitter
protected

Definition at line 123 of file EventAppender.h.


The documentation for this class was generated from the following files: