Changeset 5897 for branches/newapi

Show
Ignore:
Timestamp:
12/02/07 02:15:44 (12 months ago)
Author:
erijo
Message:

Use thread log for daemon.

Location:
branches/newapi/licq/src
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • branches/newapi/licq/src/daemon.cpp

    r5797 r5897  
    2626#include "plugin/pluginloaderimpl.h" 
    2727#include "plugin/pluginmanagerimpl.h" 
    28 #include "util/log.h" 
    29 #include "util/logdistributor.h" 
    3028#include "util/streamlogsink.h" 
    3129#include "util/support.h" 
     
    3937#include <sys/stat.h> 
    4038#include <sys/types.h> 
    41 #include <unistd.h> 
    42  
    43 static LicqDaemon::Daemon singleGlobalDaemonInstance; 
    4439 
    4540Licq::Daemon* Licq::Daemon::getInstance() 
    4641{ 
    47   return &singleGlobalDaemonInstance; 
     42  return LicqDaemon::Daemon::getInstance(); 
    4843} 
    4944 
    5045LicqDaemon::Daemon* LicqDaemon::Daemon::getInstance() 
    5146{ 
    52   return &singleGlobalDaemonInstance; 
     47  static LicqDaemon::Daemon daemon; 
     48  return &daemon; 
    5349} 
    5450 
     
    9389 
    9490LicqDaemon::Daemon::Daemon() 
    95   : myLog("daemon", &myLogDistributor) 
    96 { 
    97   myStreamLogSink = new StreamLogSink(std::cerr); 
    98   myLogDistributor.registerSink(myStreamLogSink); 
    99  
     91  : myLog(*Log::getThreadLog()) 
     92{ 
    10093  myPluginLoader = new PluginLoaderImpl(); 
    10194  myPluginCache = new PluginCacheImpl(myLog, *myPluginLoader); 
     
    108101  delete myPluginCache; 
    109102  delete myPluginLoader; 
    110  
    111   myLogDistributor.unregisterSink(myStreamLogSink); 
    112   delete myStreamLogSink; 
    113 } 
    114  
    115 void LicqDaemon::Daemon::setupLocalization() 
    116 { 
    117103} 
    118104 
     
    121107} 
    122108 
    123 bool LicqDaemon::Daemon::init(int argc, char** argv) 
     109bool LicqDaemon::Daemon::init(int argc, char** argv, StreamLogSink& streamLogSink) 
    124110{ 
    125111  namespace po = boost::program_options; 
     
    167153  } 
    168154 
    169   if (vm.count("nocolors") || !isatty(STDERR_FILENO)) 
    170     myStreamLogSink->setUseColors(false); 
     155  if (vm.count("nocolors")) 
     156    streamLogSink.setUseColors(false); 
    171157 
    172158  { 
     
    199185         it != plugins.end(); ++it) 
    200186    { 
     187      /* 
    201188      Licq::Plugin::Id 
    202189          id = myPluginManager->loadPlugin(*it, myLogDistributor, 0, NULL); 
    203190      myLog.debug(tr("Loaded plugin %1% with id %2%") % *it % id); 
     191      */ 
    204192    } 
    205193  } 
  • branches/newapi/licq/src/daemon.h

    r5656 r5897  
    2323#include "licq/interface/daemon.h" 
    2424#include "util/log.h" 
    25 #include "util/logdistributor.h" 
    2625 
    2726#include <iosfwd> 
     
    3130namespace LicqDaemon 
    3231{ 
     32 
     33class StreamLogSink; 
    3334 
    3435class Daemon : public Licq::Daemon 
     
    4041  ~Daemon(); 
    4142 
    42   void setupLocalization(); 
    4343  void installSignalHandlers(); 
    4444 
    45   bool init(int argc, char** argv); 
     45  bool init(int argc, char** argv, StreamLogSink& streamLogSink); 
    4646  int main(); 
    4747 
     
    5252 
    5353private: 
    54   LogDistributor myLogDistributor; 
    55   Log myLog; 
    56  
    57   class StreamLogSink* myStreamLogSink; 
     54  Log& myLog; 
    5855 
    5956  class PluginLoader* myPluginLoader; 
  • branches/newapi/licq/src/main.cpp

    r5809 r5897  
    1010#include "licq/exception/exception.h" 
    1111#include "licq/exception/invalidargumentexception.h" 
     12#include "util/log.h" 
     13#include "util/logdistributor.h" 
    1214#include "util/tr.h" 
     15#include "util/streamlogsink.h" 
    1316 
    1417#include <iostream> 
     18#include <unistd.h> 
    1519 
    1620/* 
     
    5155int main(int argc, char** argv) 
    5256{ 
     57  LicqDaemon::LogDistributor logDistributor; 
     58  LicqDaemon::Log::setThreadLog(new LicqDaemon::Log("licq", &logDistributor)); 
     59  Licq::Log& log = *LicqDaemon::Log::getThreadLog(); 
     60 
     61  // Enable logging to stderr 
     62  LicqDaemon::StreamLogSink streamLogSink(std::cerr); 
     63  logDistributor.registerSink(&streamLogSink); 
     64  if (!isatty(STDERR_FILENO)) 
     65    streamLogSink.setUseColors(false); 
     66 
     67  // Fail if argv[0] isn't set 
    5368  if (argc < 1) 
    5469  { 
    55     std::cerr << "Licq requires at least one argument\n"; 
     70    log.fatal() << tr("Licq requires argv[0] to be set"); 
    5671    exit(EXIT_FAILURE); 
    5772  } 
    5873 
     74  int retval = 0; 
    5975  try 
    6076  { 
     
    6682    try 
    6783    { 
    68       if (!daemon->init(argc, argv)) 
     84      if (!daemon->init(argc, argv, streamLogSink)) 
    6985        exit(EXIT_SUCCESS); 
    7086    } 
     
    7288    { 
    7389      std::cerr << ex << "\n"; 
    74       std::cerr << "Try `" << argv[0] << " --help' for more information.\n"; 
     90      std::cerr << tr("Try `%1% --help' for more information.") % argv[0] << "\n"; 
    7591      exit(EXIT_FAILURE); 
    7692    } 
    7793 
    78     int ret = daemon->main(); 
    79     return ret; 
     94    retval = daemon->main(); 
    8095  } 
    8196  catch (const Licq::Exception& ex) 
    8297  { 
    83     std::cerr << ex << "\n"; 
     98    log.fatal() << ex; 
    8499    exit(EXIT_FAILURE); 
    85100  } 
    86101  catch (const std::exception& ex) 
    87102  { 
    88     std::cerr << "Caught std::exception: " << ex.what() << "\n"; 
     103    log.fatal() << tr("Caught std::exception: %1%") % ex.what(); 
    89104    exit(EXIT_FAILURE); 
    90105  } 
    91106  catch (...) 
    92107  { 
    93     std::cerr << "Caught unknown exception\n"; 
     108    log.fatal() << tr("Caught unknown exception"); 
    94109    exit(EXIT_FAILURE); 
    95110  } 
    96   return 0; 
     111 
     112  if (retval != 0) 
     113    log.error(tr("Licq finished with exit code %1%") % retval); 
     114 
     115  logDistributor.unregisterSink(&streamLogSink); 
     116  return retval; 
    97117 
    98118  /*