38 #include <log4cxx/helpers/stringhelper.h>
39 #include <log4cxx/helpers/pool.h>
40 #include <log4cxx/spi/location/locationinfo.h>
41 #include <log4cxx/helpers/loglog.h>
50 namespace pexExceptions = lsst::pex::exceptions;
52 using namespace log4cxx;
53 using namespace log4cxx::helpers;
55 namespace ctrlEvents = lsst::ctrl::events;
71 EventAppender::~EventAppender() {
72 if (_transmitter != NULL)
77 void EventAppender::setOption(
const LogString& option,
const LogString& value) {
78 if (StringHelper::equalsIgnoreCase(option, LOG4CXX_STR(
"BROKER"), LOG4CXX_STR(
"broker"))) {
80 }
else if (StringHelper::equalsIgnoreCase(option, LOG4CXX_STR(
"PORT"), LOG4CXX_STR(
"port"))) {
81 _port = atoi(value.c_str());
82 }
else if (StringHelper::equalsIgnoreCase(option, LOG4CXX_STR(
"TOPIC"), LOG4CXX_STR(
"topic"))) {
84 }
else if (StringHelper::equalsIgnoreCase(option, LOG4CXX_STR(
"RUNID"), LOG4CXX_STR(
"runid"))) {
87 AppenderSkeleton::setOption(option, value);
91 void EventAppender::activateOptions(Pool&)
93 if (_broker.empty()) {
94 LogLog::error((LogString) LOG4CXX_STR(
"Appender requires broker option to be specified"));
99 }
catch (pexExceptions::RuntimeError& rte) {
100 std::ostringstream msg;
101 msg <<
"Couldn't reach broker " << _broker <<
" at port " << _port;
109 if (_transmitter == NULL) {
112 }
catch (Exception& e) {
119 void EventAppender::append(
const spi::LoggingEventPtr& event, helpers::Pool& p) {
123 logProp->set(LogEvent::LOGGER, event->getLoggerName());
124 logProp->set(LogEvent::LEVEL, event->getLevel()->toInt());
126 logProp->set(LogEvent::MESSAGE, event->getMessage());
127 logProp->set(LogEvent::TIMESTAMP, event->getTimeStamp());
128 logProp->set(LogEvent::THREADNAME, event->getThreadName());
130 spi::LocationInfo location =
event->getLocationInformation();
133 loc->set(LogEvent::FILENAME, location.getFileName());
134 loc->set(LogEvent::CLASSNAME, location.getClassName());
135 loc->set(LogEvent::METHODNAME, location.getMethodName());
136 loc->set(LogEvent::LINENUMBER, location.getLineNumber());
138 logProp->set(LogEvent::LOCATION, loc);
148 if (_transmitter == NULL)
153 }
catch (Exception& e) {
154 LogLog::error((LogString) LOG4CXX_STR(
"event transmitter failed"));
160 void EventAppender::close() {
defines the LocationId class
static const std::string LOGGING_TOPIC
defines the EventAppender class
#define LSST_IMPLEMENT_LOG4CXX_OBJECT(object)
Representation of an LSST Event.
void setRunId(std::string runid)
set the RunId for this Event
Transmit events to the event bus.
defines the LogEvent class
static const int DEFAULTHOSTPORT
Class for storing generic metadata.
#define LOG(logger, level, message...)
log4cxx appender class which sends logging messages out on the event stream
Represent process that created an event.
void publishEvent(Event &event)
Publish an Event to this object's topic.
Include files required for standard LSST Exception handling.