From c00d5149d5287191d4e032e46fd44c9dafdbd964 Mon Sep 17 00:00:00 2001 From: Jan Kaluza Date: Tue, 21 Jun 2011 14:30:49 +0200 Subject: [PATCH] More log4cxx --- backends/libpurple/main.cpp | 10 ++++++++-- spectrum/src/sample.cfg | 4 ++-- src/rostermanager.cpp | 12 ++++++++++-- src/rosterresponder.cpp | 14 ++++++++++++++ src/transport.cpp | 1 - src/user.cpp | 25 +++++++++++++++++++++---- src/usermanager.cpp | 6 ++++++ src/vcardresponder.cpp | 20 ++++++++++++++------ 8 files changed, 75 insertions(+), 17 deletions(-) diff --git a/backends/libpurple/main.cpp b/backends/libpurple/main.cpp index 2ee4a155..90396680 100644 --- a/backends/libpurple/main.cpp +++ b/backends/libpurple/main.cpp @@ -18,6 +18,7 @@ #include "log4cxx/logger.h" #include "log4cxx/consoleappender.h" #include "log4cxx/patternlayout.h" +#include "log4cxx/propertyconfigurator.h" using namespace log4cxx; @@ -1031,8 +1032,13 @@ int main(int argc, char **argv) { return 1; } - LoggerPtr root = log4cxx::Logger::getRootLogger(); - root->addAppender(new ConsoleAppender(new PatternLayout("%d %-5p %c: %m%n"))); + if (CONFIG_STRING(&config, "logging.backend_config").empty()) { + LoggerPtr root = log4cxx::Logger::getRootLogger(); + root->addAppender(new ConsoleAppender(new PatternLayout("%d %-5p %c: %m%n"))); + } + else { + log4cxx::PropertyConfigurator::configure(CONFIG_STRING(&config, "logging.backend_config")); + } initPurple(config); diff --git a/spectrum/src/sample.cfg b/spectrum/src/sample.cfg index 6b16b3c2..c245ae91 100644 --- a/spectrum/src/sample.cfg +++ b/spectrum/src/sample.cfg @@ -11,8 +11,8 @@ backend_port=10001 users_per_backend=2 backend=../../backends/libpurple/spectrum_libpurple_backend #backend=../../backends/libircclient-qt/spectrum_libircclient-qt_backend -#protocol=prpl-jabber -protocol=prpl-msn +protocol=prpl-jabber +#protocol=prpl-msn #protocol=prpl-icq [logging] diff --git a/src/rostermanager.cpp b/src/rostermanager.cpp index 15742e27..ca68f958 100644 --- a/src/rostermanager.cpp +++ b/src/rostermanager.cpp @@ -29,9 +29,14 @@ #include "Swiften/Elements/RosterPayload.h" #include "Swiften/Elements/RosterItemPayload.h" #include "Swiften/Elements/RosterItemExchangePayload.h" +#include "log4cxx/logger.h" + +using namespace log4cxx; namespace Transport { +static LoggerPtr logger = Logger::getLogger("RosterManager"); + RosterManager::RosterManager(User *user, Component *component){ m_rosterStorage = NULL; m_user = user; @@ -88,7 +93,7 @@ void RosterManager::setBuddyCallback(Buddy *buddy) { buddy->onBuddyChanged.connect(boost::bind(&RosterStorage::storeBuddy, m_rosterStorage, buddy)); } - std::cout << "ADDING " << buddy->getName() << "\n"; + LOG4CXX_INFO(logger, "Associating buddy " << buddy->getName() << " with " << m_user->getJID().toString()); m_buddies[buddy->getName()] = buddy; onBuddySet(buddy); @@ -136,6 +141,7 @@ Buddy *RosterManager::getBuddy(const std::string &name) { void RosterManager::sendRIE() { m_RIETimer->stop(); + LOG4CXX_INFO(logger, "Sending RIE stanza to " << m_user->getJID().toString()); Swift::RosterItemExchangePayload::ref payload = Swift::RosterItemExchangePayload::ref(new Swift::RosterItemExchangePayload()); for (std::map::const_iterator it = m_buddies.begin(); it != m_buddies.end(); it++) { Buddy *buddy = (*it).second; @@ -162,6 +168,7 @@ void RosterManager::handleSubscription(Swift::Presence::ref presence) { response->setFrom(presence->getTo()); Buddy *buddy = getBuddy(Buddy::JIDToLegacyName(presence->getTo())); if (buddy) { + LOG4CXX_INFO(logger, m_user->getJID().toString() << ": Subscription received and buddy " << Buddy::JIDToLegacyName(presence->getTo()) << " is already there => answering"); switch (presence->getType()) { case Swift::Presence::Subscribe: response->setType(Swift::Presence::Subscribed); @@ -185,6 +192,7 @@ void RosterManager::handleSubscription(Swift::Presence::ref presence) { buddyInfo.legacyName = Buddy::JIDToLegacyName(presence->getTo()); buddyInfo.subscription = "both"; buddyInfo.flags = 0; + LOG4CXX_INFO(logger, m_user->getJID().toString() << ": Subscription received for new buddy " << buddyInfo.legacyName << " => adding to legacy network"); buddy = m_component->getFactory()->createBuddy(this, buddyInfo); setBuddy(buddy); @@ -292,7 +300,7 @@ void RosterManager::setStorageBackend(StorageBackend *storageBackend) { for (std::list::const_iterator it = roster.begin(); it != roster.end(); it++) { Buddy *buddy = m_component->getFactory()->createBuddy(this, *it); - std::cout << "CREATING BUDDY FROM DATABASE CACHE " << buddy->getName() << "\n"; + LOG4CXX_INFO(logger, m_user->getJID().toString() << ": Adding cached buddy " << buddy->getName() << " fom database"); m_buddies[buddy->getName()] = buddy; buddy->onBuddyChanged.connect(boost::bind(&RosterStorage::storeBuddy, m_rosterStorage, buddy)); onBuddySet(buddy); diff --git a/src/rosterresponder.cpp b/src/rosterresponder.cpp index bb544673..8e944219 100644 --- a/src/rosterresponder.cpp +++ b/src/rosterresponder.cpp @@ -28,12 +28,17 @@ #include "transport/usermanager.h" #include "transport/rostermanager.h" #include "transport/buddy.h" +#include "log4cxx/logger.h" + +using namespace log4cxx; using namespace Swift; using namespace boost; namespace Transport { +static LoggerPtr logger = Logger::getLogger("RosterResponder"); + RosterResponder::RosterResponder(Swift::IQRouter *router, UserManager *userManager) : Swift::Responder(router) { m_userManager = userManager; } @@ -46,6 +51,7 @@ bool RosterResponder::handleGetRequest(const Swift::JID& from, const Swift::JID& // For now we send empty reponse, but TODO: Get buddies from database and send proper stored roster. User *user = m_userManager->getUser(from.toBare().toString()); if (!user) { + LOG4CXX_INFO(logger, from.toBare().toString() << ": Sending roster"); // Client can send jabber:iq:roster IQ before presence, so we do little hack here to // trigger logging in. // UserManager should create user now, if everything is OK. @@ -62,6 +68,9 @@ bool RosterResponder::handleGetRequest(const Swift::JID& from, const Swift::JID& return true; } } + else { + LOG4CXX_WARN(logger, from.toBare().toString() << ": User is not logged in"); + } sendResponse(from, id, user->getRosterManager()->generateRosterPayload()); return true; } @@ -71,10 +80,12 @@ bool RosterResponder::handleSetRequest(const Swift::JID& from, const Swift::JID& User *user = m_userManager->getUser(from.toBare().toString()); if (!user) { + LOG4CXX_WARN(logger, from.toBare().toString() << ": User is not logged in"); return true; } if (payload->getItems().size() == 0) { + LOG4CXX_WARN(logger, from.toBare().toString() << ": Roster push with no item"); return true; } @@ -83,9 +94,11 @@ bool RosterResponder::handleSetRequest(const Swift::JID& from, const Swift::JID& Buddy *buddy = user->getRosterManager()->getBuddy(Buddy::JIDToLegacyName(item.getJID())); if (buddy) { if (item.getSubscription() == Swift::RosterItemPayload::Remove) { + LOG4CXX_INFO(logger, from.toBare().toString() << ": Removing buddy " << buddy->getName()); onBuddyRemoved(buddy); } else { + LOG4CXX_INFO(logger, from.toBare().toString() << ": Updating buddy " << buddy->getName()); onBuddyUpdated(buddy, item); } } @@ -97,6 +110,7 @@ bool RosterResponder::handleSetRequest(const Swift::JID& from, const Swift::JID& buddyInfo.legacyName = Buddy::JIDToLegacyName(item.getJID()); buddyInfo.subscription = "both"; buddyInfo.flags = 0; + LOG4CXX_INFO(logger, from.toBare().toString() << ": Adding buddy " << buddyInfo.legacyName); buddy = user->getComponent()->getFactory()->createBuddy(user->getRosterManager(), buddyInfo); user->getRosterManager()->setBuddy(buddy); diff --git a/src/transport.cpp b/src/transport.cpp index ee61e876..932adb93 100644 --- a/src/transport.cpp +++ b/src/transport.cpp @@ -77,7 +77,6 @@ Component::Component(Swift::EventLoop *loop, Config *config, Factory *factory) { log4cxx::PropertyConfigurator::configure(CONFIG_STRING(m_config, "logging.config")); } - m_jid = Swift::JID(CONFIG_STRING(m_config, "service.jid")); m_factories = new BoostNetworkFactories(loop); diff --git a/src/user.cpp b/src/user.cpp index 5fbae291..b44c2253 100644 --- a/src/user.cpp +++ b/src/user.cpp @@ -28,9 +28,14 @@ #include "Swiften/Server/ServerStanzaChannel.h" #include "Swiften/Elements/StreamError.h" #include "Swiften/Elements/MUCPayload.h" +#include "log4cxx/logger.h" + +using namespace log4cxx; namespace Transport { +static LoggerPtr logger = Logger::getLogger("User"); + User::User(const Swift::JID &jid, UserInfo &userInfo, Component *component, UserManager *userManager) { m_jid = jid; @@ -47,9 +52,11 @@ User::User(const Swift::JID &jid, UserInfo &userInfo, Component *component, User m_rosterManager = new RosterManager(this, m_component); m_conversationManager = new ConversationManager(this, m_component); + LOG4CXX_INFO(logger, m_jid.toString() << ": Created"); } User::~User(){ + LOG4CXX_INFO(logger, m_jid.toString() << ": Destroying"); m_reconnectTimer->stop(); delete m_rosterManager; delete m_conversationManager; @@ -73,32 +80,35 @@ void User::handlePresence(Swift::Presence::ref presence) { boost::shared_ptr capsInfo = presence->getPayload(); if (capsInfo && capsInfo->getHash() == "sha-1") { if (m_entityCapsManager->getCaps(presence->getFrom()) != Swift::DiscoInfo::ref()) { + LOG4CXX_INFO(logger, m_jid.toString() << ": Ready to be connected to legacy network"); m_readyForConnect = true; onReadyToConnect(); } } else if (m_component->inServerMode()) { - m_readyForConnect = true; - onReadyToConnect(); + LOG4CXX_INFO(logger, m_jid.toString() << ": Ready to be connected to legacy network"); + m_readyForConnect = true; + onReadyToConnect(); } else { m_reconnectTimer->start(); } } } - std::cout << "HANDLE PRESENCE\n"; bool isMUC = presence->getPayload() != NULL || *presence->getTo().getNode().c_str() == '#'; if (isMUC) { - std::cout << "AAAAAAAAA\n"; if (presence->getType() == Swift::Presence::Unavailable) { + LOG4CXX_INFO(logger, m_jid.toString() << ": Going to left room " << presence->getTo().getNode()); onRoomLeft(presence->getTo().getNode()); } else { // force connection to legacy network to let backend to handle auto-join on connect. if (!m_readyForConnect) { + LOG4CXX_INFO(logger, m_jid.toString() << ": Ready to be connected to legacy network"); m_readyForConnect = true; onReadyToConnect(); } + LOG4CXX_INFO(logger, m_jid.toString() << ": Going to join room " << presence->getTo().getNode() << " as " << presence->getTo().getResource()); onRoomJoined(presence->getTo().getNode(), presence->getTo().getResource(), ""); } return; @@ -108,6 +118,7 @@ void User::handlePresence(Swift::Presence::ref presence) { highest->setTo(presence->getFrom().toBare()); highest->setFrom(m_component->getJID()); m_component->getStanzaChannel()->sendPresence(highest); + LOG4CXX_INFO(logger, m_jid.toString() << ": Changing legacy network presence to " << highest->getType()); onPresenceChanged(highest); } else { @@ -133,6 +144,12 @@ void User::onConnectingTimeout() { } void User::handleDisconnected(const std::string &error) { + if (error.empty()) { + LOG4CXX_INFO(logger, m_jid.toString() << ": Disconnected from legacy network"); + } + else { + LOG4CXX_INFO(logger, m_jid.toString() << ": Disconnected from legacy network with error " << error); + } onDisconnected(); boost::shared_ptr msg(new Swift::Message()); diff --git a/src/usermanager.cpp b/src/usermanager.cpp index 7e138d45..19c50b77 100644 --- a/src/usermanager.cpp +++ b/src/usermanager.cpp @@ -25,9 +25,14 @@ #include "transport/conversationmanager.h" #include "transport/rostermanager.h" #include "storageresponder.h" +#include "log4cxx/logger.h" + +using namespace log4cxx; namespace Transport { +static LoggerPtr logger = Logger::getLogger("UserManager"); + UserManager::UserManager(Component *component, StorageBackend *storageBackend) { m_cachedUser = NULL; m_onlineBuddies = 0; @@ -130,6 +135,7 @@ void UserManager::handlePresence(Swift::Presence::ref presence) { } if (!registered) { + LOG4CXX_WARN(logger, "Unregistered user " << userkey << " tried to login"); // TODO: logging return; } diff --git a/src/vcardresponder.cpp b/src/vcardresponder.cpp index 74467896..e5bf4c60 100644 --- a/src/vcardresponder.cpp +++ b/src/vcardresponder.cpp @@ -28,12 +28,17 @@ #include "transport/usermanager.h" #include "transport/rostermanager.h" #include "transport/transport.h" +#include "log4cxx/logger.h" + +using namespace log4cxx; using namespace Swift; using namespace boost; namespace Transport { +static LoggerPtr logger = Logger::getLogger("VCardResponder"); + VCardResponder::VCardResponder(Swift::IQRouter *router, UserManager *userManager) : Swift::Responder(router) { m_id = 0; m_userManager = userManager; @@ -43,12 +48,13 @@ VCardResponder::~VCardResponder() { } void VCardResponder::sendVCard(unsigned int id, boost::shared_ptr vcard) { - std::cout << "RECEIVED VCARD FROM BACKEND\n"; if (m_queries.find(id) == m_queries.end()) { - std::cout << "ERROR\n"; + LOG4CXX_WARN(logger, "Unexpected VCard from legacy network with id " << id); return; } - std::cout << "SENT " << m_queries[id].to << " " << m_queries[id].from << " " << m_queries[id].id << "\n"; + + LOG4CXX_INFO(logger, m_queries[id].from.toString() << ": Forwarding VCard of " << m_queries[id].to.toString() << " from legacy network"); + sendResponse(m_queries[id].from, m_queries[id].to, m_queries[id].id, vcard); m_queries.erase(id); } @@ -56,9 +62,9 @@ void VCardResponder::sendVCard(unsigned int id, boost::shared_ptr bool VCardResponder::handleGetRequest(const Swift::JID& from, const Swift::JID& to, const std::string& id, boost::shared_ptr payload) { // Get means we're in server mode and user wants to fetch his roster. // For now we send empty reponse, but TODO: Get buddies from database and send proper stored roster. - std::cout << "VCARD\n"; User *user = m_userManager->getUser(from.toBare().toString()); if (!user) { + LOG4CXX_WARN(logger, from.toBare().toString() << ": User is not logged in"); return false; } @@ -66,7 +72,6 @@ bool VCardResponder::handleGetRequest(const Swift::JID& from, const Swift::JID& std::string name = to_.getUnescapedNode(); if (name.empty()) { - std::cout << "aaaa " << user->getComponent()->getJID().toString() << "\n"; to_ = user->getJID(); name = to_.getUnescapedNode(); } @@ -75,7 +80,7 @@ bool VCardResponder::handleGetRequest(const Swift::JID& from, const Swift::JID& name.replace(name.find_last_of("%"), 1, "@"); } - std::cout << "VCARD1 " << name << "\n"; + LOG4CXX_INFO(logger, from.toBare().toString() << ": Requested VCard of " << name); m_queries[m_id].from = from; m_queries[m_id].to = to_; @@ -86,14 +91,17 @@ bool VCardResponder::handleGetRequest(const Swift::JID& from, const Swift::JID& bool VCardResponder::handleSetRequest(const Swift::JID& from, const Swift::JID& to, const std::string& id, boost::shared_ptr payload) { if (!to.getNode().empty()) { + LOG4CXX_WARN(logger, from.toBare().toString() << ": Tried to set VCard of somebody else"); return false; } User *user = m_userManager->getUser(from.toBare().toString()); if (!user) { + LOG4CXX_WARN(logger, from.toBare().toString() << ": User is not logged in"); return false; } + LOG4CXX_INFO(logger, from.toBare().toString() << ": Setting VCard"); onVCardUpdated(user, payload); sendResponse(from, id, boost::shared_ptr(new VCard()));