+#include "LogDockAppender.hxx"
+#include "LogDock.hxx"
+
+#include <log4cxx/patternlayout.h>
+
+using namespace log4cxx::helpers;
+
+IMPLEMENT_LOG4CXX_OBJECT(LogDockAppender)
+
+LogDockAppender::LogDockAppender()
+: timeformat("%T") {
+ layout = new PatternLayout("%d{MMM dd yyyy HH:mm:ss,SSS} - %m %n");
+}
+
+void LogDockAppender::append(const spi::LoggingEventPtr& event, Pool& p) {
+ log4cxx::LogString message, timestamp;
+
+ if ( this->layout == NULL ) {
+ LOG4CXX_ENCODE_CHAR(nameStr, name);
+ std::string msg("No Layout set for the appender named [ ");
+ msg.append(nameStr);
+ msg.append(" ].");
+
+ LOG4CXX_DECODE_CHAR(msgL, msg);
+ errorHandler->error(msgL);
+ return;
+ }
+
+ layout->format(message, event, p);
+ timeformat.format(timestamp, event->getTimeStamp(), p);
+ LOG4CXX_ENCODE_CHAR(messageencode, message);
+ LOG4CXX_ENCODE_CHAR(timestampencode, timestamp);
+
+ int rowcount = target->rowCount();
+ target->insertRow(rowcount);
+ target->setItem(rowcount, 0, new QTableWidgetItem(timestampencode.c_str()));
+ target->setItem(rowcount, 1, new QTableWidgetItem(event->getLevel()->toString().c_str()));
+ target->setItem(rowcount, 2, new QTableWidgetItem(messageencode.c_str()));
+ target->resizeColumnsToContents();
+}
+
+void LogDockAppender::setTarget(LogDock *target) {
+ this->target = target;
+}
+
+void LogDockAppender::close() {
+
+}
+
+bool LogDockAppender::requiresLayout() const {
+ return true;
+}