diff options
author | Johnny Willemsen <jwillemsen@remedy.nl> | 2009-12-30 12:50:59 +0000 |
---|---|---|
committer | Johnny Willemsen <jwillemsen@remedy.nl> | 2009-12-30 12:50:59 +0000 |
commit | 4bfafc2ef74015498316559ea2c48af623f1083c (patch) | |
tree | 1170e8e04afcb787029c02060278c472e72e7a4d | |
parent | e76a2c806d299a2a1a7d521d1c8a352bb66b738f (diff) | |
download | ATCD-4bfafc2ef74015498316559ea2c48af623f1083c.tar.gz |
Wed Dec 30 12:50:39 UTC 2009 Johnny Willemsen <jwillemsen@remedy.nl>
* ciao/ComponentServer/CIAO_ComponentServer.cpp
* ciao/ComponentServer/CIAO_ComponentServer_Task.cpp
* ciao/ComponentServer/CIAO_ComponentServer_Task.h
* ciao/ComponentServer/CIAO_RTComponentServer_Task.cpp
* ciao/ComponentServer/CIAO_RTComponentServer_Task.h
* ciao/Logger/CIAOLoggerFactory.h
* ciao/Logger/File_Logger_Backend.cpp
* ciao/Logger/File_Logger_Backend.h
* ciao/Logger/Logger.mpc
* ciao/Logger/Logger_Service.cpp
* ciao/Logger/Logger_Service.h
* DAnCE/Deployment/Module_Main.h
* DAnCE/Logger/DAnCELoggerFactory.h
* DAnCE/Logger/File_Logger_Backend.cpp
* DAnCE/Logger/File_Logger_Backend.h
* DAnCE/Logger/Logger.mpc
* DAnCE/Logger/Logger_Service.cpp
* DAnCE/Logger/Logger_Service.h
* DAnCE/RepositoryManager/repository_manager_admin_exec.cpp
* DAnCE/tests/CIAO/ExecutionManager-Deployments/simple_em_launcher.cpp
* DAnCE/tests/CIAO/NodeManager-Deployments/simple_nm_launcher.cpp
Simplified logging infrastructure code
22 files changed, 185 insertions, 399 deletions
diff --git a/CIAO/ChangeLog b/CIAO/ChangeLog index fdbbc17c6e2..cb0e5ccdb64 100644 --- a/CIAO/ChangeLog +++ b/CIAO/ChangeLog @@ -1,3 +1,28 @@ +Wed Dec 30 12:50:39 UTC 2009 Johnny Willemsen <jwillemsen@remedy.nl> + + * ciao/ComponentServer/CIAO_ComponentServer.cpp + * ciao/ComponentServer/CIAO_ComponentServer_Task.cpp + * ciao/ComponentServer/CIAO_ComponentServer_Task.h + * ciao/ComponentServer/CIAO_RTComponentServer_Task.cpp + * ciao/ComponentServer/CIAO_RTComponentServer_Task.h + * ciao/Logger/CIAOLoggerFactory.h + * ciao/Logger/File_Logger_Backend.cpp + * ciao/Logger/File_Logger_Backend.h + * ciao/Logger/Logger.mpc + * ciao/Logger/Logger_Service.cpp + * ciao/Logger/Logger_Service.h + * DAnCE/Deployment/Module_Main.h + * DAnCE/Logger/DAnCELoggerFactory.h + * DAnCE/Logger/File_Logger_Backend.cpp + * DAnCE/Logger/File_Logger_Backend.h + * DAnCE/Logger/Logger.mpc + * DAnCE/Logger/Logger_Service.cpp + * DAnCE/Logger/Logger_Service.h + * DAnCE/RepositoryManager/repository_manager_admin_exec.cpp + * DAnCE/tests/CIAO/ExecutionManager-Deployments/simple_em_launcher.cpp + * DAnCE/tests/CIAO/NodeManager-Deployments/simple_nm_launcher.cpp + Simplified logging infrastructure code + Wed Dec 30 11:56:39 UTC 2009 Johnny Willemsen <jwillemsen@remedy.nl> * connectors/dds4ccm/examples/Hello/Receiver/Hello_Receiver_exec.cpp: diff --git a/CIAO/DAnCE/Deployment/Module_Main.h b/CIAO/DAnCE/Deployment/Module_Main.h index 85a819096ec..b4f3ac01040 100644 --- a/CIAO/DAnCE/Deployment/Module_Main.h +++ b/CIAO/DAnCE/Deployment/Module_Main.h @@ -9,8 +9,8 @@ #ifndef DANCE_MODULE_MAIN_H_ #define DANCE_MODULE_MAIN_H_ -#include "ace/Auto_Ptr.h" #include "ace/Dynamic_Service.h" +#include "tao/ORB.h" #include "tao/Object.h" #include "DAnCE/Logger/Log_Macros.h" #include "DAnCE/Logger/Logger_Service.h" @@ -25,45 +25,28 @@ //#include DANCE_MODULE_MAIN_INCLUDE_NAME -using namespace DAnCE; - int ACE_TMAIN (int argc, ACE_TCHAR **argv) { DANCE_DISABLE_TRACE (); - auto_ptr<Logger_Service> logger; int retval = 0; try { - Logger_Service - * dlf = ACE_Dynamic_Service<Logger_Service>::instance ("DAnCE_Logger_Backend_Factory"); + DAnCE::Logger_Service + * dlf = ACE_Dynamic_Service<DAnCE::Logger_Service>::instance ("DAnCE_Logger"); - if (!dlf) + if (dlf) { - dlf = new Logger_Service; - logger.reset (dlf); + dlf->init (argc, argv); } - dlf->init (argc, argv); - DANCE_DEBUG (6, (LM_TRACE, DLINFO ACE_TEXT("Module_main.h - initializing ORB\n"))); CORBA::ORB_var orb = CORBA::ORB_init(argc, argv); - ACE_Log_Msg_Backend * backend = dlf->get_logger_backend(orb); - - if (backend != 0) - { - backend->open(0); - ACE_Log_Msg::msg_backend (backend); - ACE_Log_Msg * ace = ACE_Log_Msg::instance(); - ace->clr_flags(ace->flags()); - ace->set_flags(ACE_Log_Msg::CUSTOM); - } - DANCE_DEBUG (6, (LM_TRACE, DLINFO ACE_TEXT("Module_Main.h - initializing module instance\n"))); diff --git a/CIAO/DAnCE/Logger/DAnCELoggerFactory.h b/CIAO/DAnCE/Logger/DAnCELoggerFactory.h deleted file mode 100644 index f2ed4800950..00000000000 --- a/CIAO/DAnCE/Logger/DAnCELoggerFactory.h +++ /dev/null @@ -1,19 +0,0 @@ -// $Id$ -#ifndef DAnCE_LOGGERFACTORY_BASE_H_ -#define DAnCE_LOGGERFACTORY_BASE_H_ - -#include "ace/Service_Object.h" -#include "tao/ORB.h" -#include "ace/Log_Msg_Backend.h" - -namespace DAnCE - { - - class DAnCELoggerFactory : public ACE_Service_Object - { - public: - virtual ACE_Log_Msg_Backend * get_logger_backend (CORBA::ORB_ptr orb) = 0; - }; -} // DAnCE - -#endif /*LOGGERFACTORY_H_*/ diff --git a/CIAO/DAnCE/Logger/File_Logger_Backend.cpp b/CIAO/DAnCE/Logger/File_Logger_Backend.cpp deleted file mode 100644 index cf88c47c114..00000000000 --- a/CIAO/DAnCE/Logger/File_Logger_Backend.cpp +++ /dev/null @@ -1,46 +0,0 @@ -// $Id$ -#include "File_Logger_Backend.h" -#include "ace/OS_NS_stdio.h" -#include "ace/Log_Record.h" -#include "ace/Log_Msg.h" -#include "Log_Macros.h" - -namespace DAnCE - { - - int - File_Logger_Backend::open (const ACE_TCHAR *) - { - DANCE_DEBUG (6, (LM_DEBUG, "Setting logger's output to file \"%s\"\n", this->filename_.c_str())); - this->fh_ = ACE_OS::fopen (this->filename_.c_str(), "a+"); - if (!this->fh_) - { - ACE_TString s = ACE_TEXT("Failed to open log file \""); - s += this->filename_; - s += ACE_TEXT("\"\n"); - throw LoggerError (s.c_str()); - } - return 0; - } - - int - File_Logger_Backend::close (void) - { - if (this->fh_) - { - ACE_OS::fclose (this->fh_); - this->fh_ = 0; - } - return 0; - } - - ssize_t - File_Logger_Backend::log (ACE_Log_Record &log_record) - { - int const res = log_record.print (0, ACE_Log_Msg::VERBOSE, this->fh_); - ACE_OS::fflush (this->fh_); - return res; - } - -} - diff --git a/CIAO/DAnCE/Logger/File_Logger_Backend.h b/CIAO/DAnCE/Logger/File_Logger_Backend.h deleted file mode 100644 index 6a02326f429..00000000000 --- a/CIAO/DAnCE/Logger/File_Logger_Backend.h +++ /dev/null @@ -1,50 +0,0 @@ -// $Id$ -#ifndef FILE_LOGGER_BACKEND_H_ -#define FILE_LOGGER_BACKEND_H_ - -#include "ace/Log_Msg_Backend.h" -#include "DAnCE_Logger_Export.h" -#include "ace/SString.h" - -namespace DAnCE - { - - class DAnCE_Logger_Export LoggerError - { - public: - LoggerError (const ACE_TCHAR * msg) - : errmsg_ (msg) {}; - ACE_TString errmsg_; - }; - - class DAnCE_Logger_Export File_Logger_Backend : public ACE_Log_Msg_Backend - { - public: - File_Logger_Backend (const ACE_TCHAR * fname) - : fh_ (0), filename_ (fname) {} - - virtual ~File_Logger_Backend (void) - { - this->close(); - }; - - virtual int open (const ACE_TCHAR *logger_key); - - virtual int reset (void) - { - this->close(); - return this->open (0); - }; - - virtual int close (void); - - virtual ssize_t log (ACE_Log_Record &log_record); - - private: - FILE * fh_; - ACE_TString filename_; - }; - -} // DAnCE - -#endif /*FILE_LOGGER_BACKEND_H_*/ diff --git a/CIAO/DAnCE/Logger/Logger.mpc b/CIAO/DAnCE/Logger/Logger.mpc index b2f543bd5ae..649d5ff71fc 100644 --- a/CIAO/DAnCE/Logger/Logger.mpc +++ b/CIAO/DAnCE/Logger/Logger.mpc @@ -1,12 +1,11 @@ // -*- MPC -*- // $Id$ -project(DAnCE_Logger): dance_lib, messaging, acelib { +project(DAnCE_Logger): dance_lib, taolib, acelib { sharedname = DAnCE_Logger dynamicflags = DANCE_LOGGER_BUILD_DLL Source_Files { - File_Logger_Backend.cpp Logger_Service.cpp Log_Macros.cpp } diff --git a/CIAO/DAnCE/Logger/Logger_Service.cpp b/CIAO/DAnCE/Logger/Logger_Service.cpp index c1407593a11..8f8246f79f0 100644 --- a/CIAO/DAnCE/Logger/Logger_Service.cpp +++ b/CIAO/DAnCE/Logger/Logger_Service.cpp @@ -5,6 +5,13 @@ #include "ace/CORBA_macros.h" #include "tao/SystemException.h" #include "Log_Macros.h" +#include "ace/Service_Config.h" + +#if !defined (ACE_LACKS_IOSTREAM_TOTALLY) +// Needed to set ACE_LOG_MSG::msg_ostream() +// FUZZ: disable check_for_streams_include +# include "ace/streams.h" +#endif /* !ACE_LACKS_IOSTREAM_TOTALLY */ namespace DAnCE { @@ -39,10 +46,48 @@ namespace DAnCE DANCE_DISABLE_TRACE (); } + if (this->filename_.length () > 0) + { +#if defined (ACE_LACKS_IOSTREAM_TOTALLY) + + FILE* output_stream = ACE_OS::fopen (this->filename_.c_str (), ACE_TEXT ("a")); + + ACE_LOG_MSG->msg_ostream (output_stream, 1); + +#else /* ! ACE_LACKS_IOSTREAM_TOTALLY */ + + ofstream* output_stream = 0; + + // + // note: we are allocating dynamic memory here....but + // I assume it will persist for the life of the program + // + + ACE_NEW_THROW_EX (output_stream, + ofstream (), + CORBA::NO_MEMORY ( + CORBA::SystemException::_tao_minor_code ( + 0, + ENOMEM), + CORBA::COMPLETED_NO)); + + output_stream->open (ACE_TEXT_ALWAYS_CHAR (this->filename_.c_str ()), + ios::out | ios::app); + + if (!output_stream->bad ()) + { + ACE_LOG_MSG->msg_ostream (output_stream, 1); + } + +#endif /* ACE_LACKS_IOSTREAM_TOTALLY */ + + ACE_LOG_MSG->clr_flags (ACE_Log_Msg::STDERR | ACE_Log_Msg::LOGGER); + ACE_LOG_MSG->set_flags (ACE_Log_Msg::OSTREAM); + } + return 0; } - void Logger_Service::parse_args (int argc, ACE_TCHAR **argv) { @@ -88,22 +133,19 @@ namespace DAnCE } } - ACE_Log_Msg_Backend * - Logger_Service::get_logger_backend (CORBA::ORB_ptr) + int + Logger_Service::Initializer (void) { - if (this->filename_ != ACE_TEXT("")) - { - File_Logger_Backend * the_backend = 0; - ACE_NEW_THROW_EX (the_backend, - File_Logger_Backend (this->filename_.c_str()), - CORBA::NO_MEMORY()); - return the_backend; - } - return 0; + return ACE_Service_Config::process_directive (ace_svc_desc_Logger_Service); } - } // DAnCE using namespace DAnCE; +ACE_STATIC_SVC_DEFINE (Logger_Service, + ACE_TEXT ("DAnCE_Logger"), + ACE_SVC_OBJ_T, + &ACE_SVC_NAME (Logger_Service), + ACE_Service_Type::DELETE_THIS | ACE_Service_Type::DELETE_OBJ, + 0) ACE_FACTORY_DEFINE (DAnCE_Logger, Logger_Service) diff --git a/CIAO/DAnCE/Logger/Logger_Service.h b/CIAO/DAnCE/Logger/Logger_Service.h index c08629a53f2..8bbf6943363 100644 --- a/CIAO/DAnCE/Logger/Logger_Service.h +++ b/CIAO/DAnCE/Logger/Logger_Service.h @@ -3,25 +3,29 @@ #define LOGGER_SERVICE_H_ #include "DAnCE/Logger/DAnCE_Logger_Export.h" -#include "DAnCE/Logger/DAnCELoggerFactory.h" -#include "DAnCE/Logger/File_Logger_Backend.h" +#include "ace/Service_Object.h" namespace DAnCE { - class DAnCE_Logger_Export Logger_Service : public ::DAnCE::DAnCELoggerFactory - { + class DAnCE_Logger_Export Logger_Service : public ACE_Service_Object + { public: Logger_Service (void); virtual int init (int argc, ACE_TCHAR * argv[]); - virtual ACE_Log_Msg_Backend * get_logger_backend (CORBA::ORB_ptr orb); + + static int Initializer (void); private: void parse_args (int argc, ACE_TCHAR **argv); ACE_TString filename_; bool trace_; - }; + }; } +static int TAO_Requires_DAnCE_Logger_Service_Initializer = + DAnCE::Logger_Service::Initializer (); + +ACE_STATIC_SVC_DECLARE (Logger_Service) ACE_FACTORY_DECLARE (DAnCE_Logger, Logger_Service) #endif /*LOGGER_SERVICE_H_*/ diff --git a/CIAO/DAnCE/RepositoryManager/repository_manager_admin_exec.cpp b/CIAO/DAnCE/RepositoryManager/repository_manager_admin_exec.cpp index 5806564712c..f189afdf197 100644 --- a/CIAO/DAnCE/RepositoryManager/repository_manager_admin_exec.cpp +++ b/CIAO/DAnCE/RepositoryManager/repository_manager_admin_exec.cpp @@ -322,34 +322,20 @@ int ACE_TMAIN (int argc, ACE_TCHAR **argv) try { DAnCE::Logger_Service - * dlf = ACE_Dynamic_Service<DAnCE::Logger_Service>::instance ("DAnCE_Logger_Backend_Factory"); + * dlf = ACE_Dynamic_Service<DAnCE::Logger_Service>::instance ("DAnCE_Logger"); - if (!dlf) + if (dlf) { - dlf = new DAnCE::Logger_Service; - logger.reset (dlf); + dlf->init (argc, argv); } - dlf->init (argc, argv); - DANCE_DEBUG (9, (LM_TRACE, DLINFO "Module_main.h - initializing ORB\n")); CORBA::ORB_var orb = CORBA::ORB_init(argc, argv); - ACE_Log_Msg_Backend * backend = dlf->get_logger_backend(orb); - - if (backend != 0) - { - backend->open(0); - ACE_Log_Msg::msg_backend (backend); - ACE_Log_Msg * ace = ACE_Log_Msg::instance(); - ace->clr_flags(ace->flags()); - ace->set_flags(ACE_Log_Msg::CUSTOM); - } - Options options; - int error = options.parse_args (argc, argv); + int const error = options.parse_args (argc, argv); if (error == -1) { DANCE_ERROR (1, (LM_ERROR, DLINFO "repository_manager_admin_exec::main - " diff --git a/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/simple_em_launcher.cpp b/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/simple_em_launcher.cpp index 209bc927792..3e9c61e74b1 100644 --- a/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/simple_em_launcher.cpp +++ b/CIAO/DAnCE/tests/CIAO/ExecutionManager-Deployments/simple_em_launcher.cpp @@ -27,16 +27,13 @@ int ACE_TMAIN (int argc, ACE_TCHAR *argv[]) { DANCE_DISABLE_TRACE (); - auto_ptr<DAnCE::Logger_Service> logger; - DAnCE::Logger_Service - * dlf = ACE_Dynamic_Service<DAnCE::Logger_Service>::instance ("DAnCE_Logger_Backend_Factory"); - - if (!dlf) - dlf = new DAnCE::Logger_Service; + * dlf = ACE_Dynamic_Service<DAnCE::Logger_Service>::instance ("DAnCE_Logger"); - logger.reset (dlf); - logger->init (argc, argv); + if (dlf) + { + dlf->init (argc, argv); + } CORBA::ORB_var orb = CORBA::ORB_init (argc, argv); diff --git a/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/simple_nm_launcher.cpp b/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/simple_nm_launcher.cpp index 296713a2f7f..e0731b074ed 100644 --- a/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/simple_nm_launcher.cpp +++ b/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/simple_nm_launcher.cpp @@ -26,16 +26,13 @@ int ACE_TMAIN (int argc, ACE_TCHAR *argv[]) { DANCE_DISABLE_TRACE (); - auto_ptr<DAnCE::Logger_Service> logger; - DAnCE::Logger_Service - * dlf = ACE_Dynamic_Service<DAnCE::Logger_Service>::instance ("DAnCE_Logger_Backend_Factory"); - - if (!dlf) - dlf = new DAnCE::Logger_Service; + * dlf = ACE_Dynamic_Service<DAnCE::Logger_Service>::instance ("DAnCE_Logger"); - logger.reset (dlf); - logger->init (argc, argv); + if (dlf) + { + dlf->init (argc, argv); + } CORBA::ORB_var orb = CORBA::ORB_init (argc, argv); diff --git a/CIAO/ciao/ComponentServer/CIAO_ComponentServer.cpp b/CIAO/ciao/ComponentServer/CIAO_ComponentServer.cpp index 3cfb0240564..59a6bfad232 100644 --- a/CIAO/ciao/ComponentServer/CIAO_ComponentServer.cpp +++ b/CIAO/ciao/ComponentServer/CIAO_ComponentServer.cpp @@ -7,7 +7,6 @@ */ #include "CIAO_ComponentServer_Task.h" -#include "ace/Thread_Manager.h" #include "ciao/Logger/Log_Macros.h" int ACE_TMAIN (int argc, ACE_TCHAR **argv) @@ -28,13 +27,13 @@ int ACE_TMAIN (int argc, ACE_TCHAR **argv) } catch (CIAO::Deployment::ComponentServer_Task::Error &e) { - CIAO_DEBUG (6, (LM_ALERT, CLINFO "CIAO_ComponentServer main: Caught ComponentServer exception: %C\n", + CIAO_ERROR (1, (LM_ERROR, CLINFO "CIAO_ComponentServer main: Caught ComponentServer exception: %C\n", e.err_.c_str ())); retval = -1; } catch (...) { - CIAO_DEBUG (6, (LM_ALERT, CLINFO "CIAO_ComponentServer main: Caught unknown exception.\n")); + CIAO_ERROR (1, (LM_ERROR, CLINFO "CIAO_ComponentServer main: Caught unknown exception.\n")); retval = -1; } diff --git a/CIAO/ciao/ComponentServer/CIAO_ComponentServer_Task.cpp b/CIAO/ciao/ComponentServer/CIAO_ComponentServer_Task.cpp index 4ce7873c873..3909a4f0b36 100644 --- a/CIAO/ciao/ComponentServer/CIAO_ComponentServer_Task.cpp +++ b/CIAO/ciao/ComponentServer/CIAO_ComponentServer_Task.cpp @@ -31,17 +31,13 @@ namespace CIAO CIAO_TRACE ("CIAO_ComponentServer_Task::CIAO_ComponentServer_Task ()"); Logger_Service - *clf = ACE_Dynamic_Service<Logger_Service>::instance ("CIAO_Logger_Backend_Factory"); + *clf = ACE_Dynamic_Service<Logger_Service>::instance ("CIAO_Logger"); - if (!clf) + if (clf) { - clf = new Logger_Service; + clf->init (argc, argv); } - this->logger_.reset (clf); - - this->logger_->init (argc, argv); - CIAO_DEBUG (9, (LM_TRACE, CLINFO "CIAO_ComponentServer_Task::CIAO_ComponentServer_Task - " "Creating ORB\n")); @@ -50,8 +46,6 @@ namespace CIAO this->parse_args (argc, argv); - this->configure_logging_backend (); - CIAO::Server_init (this->orb_.in ()); CIAO_DEBUG (9, (LM_TRACE, CLINFO @@ -308,24 +302,6 @@ namespace CIAO )); } - - void - ComponentServer_Task::configure_logging_backend (void) - { - Logger_Service - *clf = ACE_Dynamic_Service<Logger_Service>::instance ("CIAO_Logger_Backend_Factory"); - if (clf) - { - CIAO_DEBUG (9, (LM_TRACE, CLINFO "ComponentServer_Task::configure_logging_backend - " - "Replacing logger backend\n")); - ACE_Log_Msg_Backend * backend = clf->get_logger_backend(this->orb_); - backend->open(0); - ACE_Log_Msg::msg_backend (backend); - ACE_Log_Msg * ace = ACE_Log_Msg::instance(); - ace->clr_flags(ace->flags()); - ace->set_flags(ACE_Log_Msg::CUSTOM); - } - } } } diff --git a/CIAO/ciao/ComponentServer/CIAO_ComponentServer_Task.h b/CIAO/ciao/ComponentServer/CIAO_ComponentServer_Task.h index c3920b47631..ba3f00d5c31 100644 --- a/CIAO/ciao/ComponentServer/CIAO_ComponentServer_Task.h +++ b/CIAO/ciao/ComponentServer/CIAO_ComponentServer_Task.h @@ -13,7 +13,6 @@ #include "ace/String_Base.h" #include "ace/Task.h" #include "tao/ORB.h" -#include "ciao/Logger/Logger_Service.h" namespace CIAO { @@ -37,14 +36,10 @@ namespace CIAO private: void parse_args (int argc, ACE_TCHAR **argv); - void configure_logging_backend (void); - void usage (void); CORBA::ORB_var orb_; - auto_ptr<CIAO::Logger_Service> logger_; - ACE_CString uuid_; ACE_TString callback_ior_str_; ACE_TString output_file_; diff --git a/CIAO/ciao/ComponentServer/CIAO_RTComponentServer_Task.cpp b/CIAO/ciao/ComponentServer/CIAO_RTComponentServer_Task.cpp index f4fd78cee5b..4ce01c6c530 100644 --- a/CIAO/ciao/ComponentServer/CIAO_RTComponentServer_Task.cpp +++ b/CIAO/ciao/ComponentServer/CIAO_RTComponentServer_Task.cpp @@ -68,17 +68,13 @@ namespace CIAO CIAO_TRACE ("CIAO_RTComponentServer_Task::CIAO_RTComponentServer_Task"); Logger_Service - *clf = ACE_Dynamic_Service<Logger_Service>::instance ("CIAO_Logger_Backend_Factory"); + *clf = ACE_Dynamic_Service<Logger_Service>::instance ("CIAO_Logger"); - if (!clf) + if (clf) { - clf = new Logger_Service; + clf->init (argc, argv); } - this->logger_.reset (clf); - - this->logger_->init (argc, argv); - CIAO_DEBUG (9, (LM_TRACE, CLINFO "CIAO_RTComponentServer_Task::CIAO_RTComponentServer_Task - " "Creating ORB\n")); @@ -87,8 +83,6 @@ namespace CIAO this->parse_args (argc, argv); - this->configure_logging_backend (); - CIAO::Server_init (this->orb_.in ()); CIAO_DEBUG (9, (LM_TRACE, CLINFO @@ -422,24 +416,6 @@ namespace CIAO )); } - - void - RTComponentServer_Task::configure_logging_backend (void) - { - Logger_Service - *clf = ACE_Dynamic_Service<Logger_Service>::instance ("CIAO_Logger_Backend_Factory"); - if (clf) - { - CIAO_DEBUG (9, (LM_TRACE, CLINFO "RTComponentServer_Task::configure_logging_backend - " - "Replacing logger backend\n")); - ACE_Log_Msg_Backend * backend = clf->get_logger_backend(this->orb_); - backend->open(0); - ACE_Log_Msg::msg_backend (backend); - ACE_Log_Msg * ace = ACE_Log_Msg::instance(); - ace->clr_flags(ace->flags()); - ace->set_flags(ACE_Log_Msg::CUSTOM); - } - } } } diff --git a/CIAO/ciao/ComponentServer/CIAO_RTComponentServer_Task.h b/CIAO/ciao/ComponentServer/CIAO_RTComponentServer_Task.h index ab6c0b0860e..4212bcb7751 100644 --- a/CIAO/ciao/ComponentServer/CIAO_RTComponentServer_Task.h +++ b/CIAO/ciao/ComponentServer/CIAO_RTComponentServer_Task.h @@ -13,7 +13,6 @@ #include "ace/String_Base.h" #include "ace/Task.h" #include "tao/ORB.h" -#include "ciao/Logger/Logger_Service.h" #include "tao/RTPortableServer/RTPortableServer.h" namespace CIAO @@ -38,14 +37,10 @@ namespace CIAO private: void parse_args (int argc, ACE_TCHAR **argv); - void configure_logging_backend (void); - void usage (void); CORBA::ORB_var orb_; - auto_ptr<CIAO::Logger_Service> logger_; - ACE_CString uuid_; ACE_TString callback_ior_str_; ACE_TString output_file_; diff --git a/CIAO/ciao/Logger/CIAOLoggerFactory.h b/CIAO/ciao/Logger/CIAOLoggerFactory.h deleted file mode 100644 index 3abee97aaf1..00000000000 --- a/CIAO/ciao/Logger/CIAOLoggerFactory.h +++ /dev/null @@ -1,19 +0,0 @@ -// $Id$ -#ifndef LOGGERFACTORY_H_ -#define LOGGERFACTORY_H_ - -#include "ace/Service_Object.h" -#include "tao/ORB.h" -#include "ace/Log_Msg_Backend.h" - -namespace CIAO - { - - class CIAOLoggerFactory : public ACE_Service_Object - { - public: - virtual ACE_Log_Msg_Backend * get_logger_backend (CORBA::ORB_ptr orb) = 0; - }; -} // CIAO - -#endif /*LOGGERFACTORY_H_*/ diff --git a/CIAO/ciao/Logger/File_Logger_Backend.cpp b/CIAO/ciao/Logger/File_Logger_Backend.cpp deleted file mode 100644 index 46b23fd011c..00000000000 --- a/CIAO/ciao/Logger/File_Logger_Backend.cpp +++ /dev/null @@ -1,46 +0,0 @@ -// $Id$ -#include "File_Logger_Backend.h" -#include "ace/OS_NS_stdio.h" -#include "ace/Log_Record.h" -#include "ace/Log_Msg.h" -#include "ciao/Logger/Log_Macros.h" - -namespace CIAO -{ - - int - File_Logger_Backend::open (const ACE_TCHAR *) - { - CIAO_DEBUG (7, (LM_DEBUG, CLINFO "Setting logger's output to file \"%s\"", this->filename_.c_str())); - this->fh_ = ACE_OS::fopen (this->filename_.c_str(), "w"); - if (0 == this->fh_) - { - ACE_CString s = "Failed to open log file \""; - s += ACE_TEXT_ALWAYS_CHAR (this->filename_.c_str ()); - s += "\""; - throw LoggerError (s.c_str()); - } - return 0; - } - - int - File_Logger_Backend::close (void) - { - if (0 != this->fh_) - { - ACE_OS::fclose (this->fh_); - this->fh_ = 0; - } - return 0; - } - - ssize_t - File_Logger_Backend::log (ACE_Log_Record &log_record) - { - int const res = log_record.print (0, ACE_Log_Msg::VERBOSE, this->fh_); - ACE_OS::fflush (this->fh_); - return res; - } - -} - diff --git a/CIAO/ciao/Logger/File_Logger_Backend.h b/CIAO/ciao/Logger/File_Logger_Backend.h deleted file mode 100644 index 0ca07b67bac..00000000000 --- a/CIAO/ciao/Logger/File_Logger_Backend.h +++ /dev/null @@ -1,51 +0,0 @@ -// $Id$ -#ifndef FILE_LOGGER_BACKEND_H_ -#define FILE_LOGGER_BACKEND_H_ - -#include "ace/Log_Msg_Backend.h" -#include "ace/SString.h" - -#include "CIAO_Logger_Export.h" - -namespace CIAO - { - - class CIAO_Logger_Export LoggerError - { - public: - LoggerError (const char * msg) - : errmsg_ (msg) {}; - ACE_CString errmsg_; - }; - - class CIAO_Logger_Export File_Logger_Backend : public ACE_Log_Msg_Backend - { - public: - File_Logger_Backend (const ACE_TCHAR * fname) - : fh_ (0), filename_ (fname) {} - - virtual ~File_Logger_Backend (void) - { - this->close(); - }; - - virtual int open (const ACE_TCHAR *logger_key); - - virtual int reset (void) - { - this->close(); - return this->open (0); - }; - - virtual int close (void); - - virtual ssize_t log (ACE_Log_Record &log_record); - - private: - FILE * fh_; - ACE_TString filename_; - }; - -} // CIAO - -#endif /*FILE_LOGGER_BACKEND_H_*/ diff --git a/CIAO/ciao/Logger/Logger.mpc b/CIAO/ciao/Logger/Logger.mpc index fa370d07bea..987e3a384c4 100644 --- a/CIAO/ciao/Logger/Logger.mpc +++ b/CIAO/ciao/Logger/Logger.mpc @@ -1,12 +1,11 @@ // -*- MPC -*- // $Id$ -project(CIAO_Logger): ciao_lib, messaging { +project(CIAO_Logger): ciao_lib, taolib, acelib { sharedname = CIAO_Logger dynamicflags = CIAO_LOGGER_BUILD_DLL Source_Files { - File_Logger_Backend.cpp Logger_Service.cpp Log_Macros.cpp } diff --git a/CIAO/ciao/Logger/Logger_Service.cpp b/CIAO/ciao/Logger/Logger_Service.cpp index cc3438d0fda..b12a0c35d27 100644 --- a/CIAO/ciao/Logger/Logger_Service.cpp +++ b/CIAO/ciao/Logger/Logger_Service.cpp @@ -5,6 +5,13 @@ #include "ace/CORBA_macros.h" #include "ace/Env_Value_T.h" #include "tao/SystemException.h" +#include "ace/Service_Config.h" + +#if !defined (ACE_LACKS_IOSTREAM_TOTALLY) +// Needed to set ACE_LOG_MSG::msg_ostream() +// FUZZ: disable check_for_streams_include +# include "ace/streams.h" +#endif /* !ACE_LACKS_IOSTREAM_TOTALLY */ namespace CIAO { @@ -39,6 +46,40 @@ namespace CIAO CIAO_DISABLE_TRACE (); } + if (this->filename_.length () > 0) + { +#if defined (ACE_LACKS_IOSTREAM_TOTALLY) + + FILE* output_stream = ACE_OS::fopen (this->filename_.c_str (), ACE_TEXT ("a")); + + ACE_LOG_MSG->msg_ostream (output_stream, 1); + +#else /* ! ACE_LACKS_IOSTREAM_TOTALLY */ + + ofstream* output_stream = 0; + + ACE_NEW_THROW_EX (output_stream, + ofstream (), + CORBA::NO_MEMORY ( + CORBA::SystemException::_tao_minor_code ( + 0, + ENOMEM), + CORBA::COMPLETED_NO)); + + output_stream->open (ACE_TEXT_ALWAYS_CHAR (this->filename_.c_str ()), + ios::out | ios::app); + + if (!output_stream->bad ()) + { + ACE_LOG_MSG->msg_ostream (output_stream, 1); + } + +#endif /* ACE_LACKS_IOSTREAM_TOTALLY */ + + ACE_LOG_MSG->clr_flags (ACE_Log_Msg::STDERR | ACE_Log_Msg::LOGGER); + ACE_LOG_MSG->set_flags (ACE_Log_Msg::OSTREAM); + } + return 0; } @@ -87,17 +128,19 @@ namespace CIAO } } - ACE_Log_Msg_Backend * - Logger_Service::get_logger_backend (CORBA::ORB_ptr) + int + Logger_Service::Initializer (void) { - File_Logger_Backend * the_backend = 0; - ACE_NEW_THROW_EX (the_backend, - File_Logger_Backend (this->filename_.c_str()), - CORBA::NO_MEMORY()); - return the_backend; + return ACE_Service_Config::process_directive (ace_svc_desc_Logger_Service); } } // CIAO using namespace CIAO; +ACE_STATIC_SVC_DEFINE (Logger_Service, + ACE_TEXT ("CIAO_Logger"), + ACE_SVC_OBJ_T, + &ACE_SVC_NAME (Logger_Service), + ACE_Service_Type::DELETE_THIS | ACE_Service_Type::DELETE_OBJ, + 0) ACE_FACTORY_DEFINE (CIAO_Logger, Logger_Service) diff --git a/CIAO/ciao/Logger/Logger_Service.h b/CIAO/ciao/Logger/Logger_Service.h index a49cfbf71de..890c9c07a93 100644 --- a/CIAO/ciao/Logger/Logger_Service.h +++ b/CIAO/ciao/Logger/Logger_Service.h @@ -4,28 +4,29 @@ #define CIAO_LOGGER_SERVICE_H_ #include "CIAO_Logger_Export.h" -#include "CIAOLoggerFactory.h" -#include "File_Logger_Backend.h" +#include "ace/Service_Object.h" namespace CIAO { + class CIAO_Logger_Export Logger_Service : public ACE_Service_Object + { + public: + Logger_Service (void); + virtual int init (int argc, ACE_TCHAR * argv[]); - class CIAO_Logger_Export Logger_Service : public CIAOLoggerFactory - { - public: - Logger_Service (void); + static int Initializer (void); + private: + void parse_args (int argc, ACE_TCHAR **argv); - virtual int init (int argc, ACE_TCHAR * argv[]); - virtual ACE_Log_Msg_Backend * get_logger_backend (CORBA::ORB_ptr orb); + ACE_TString filename_; + bool trace_; + }; + } - private: - void parse_args (int argc, ACE_TCHAR **argv); - - ACE_TString filename_; - bool trace_; - }; -} +static int TAO_Requires_CIAO_Logger_Service_Initializer = + CIAO::Logger_Service::Initializer (); +ACE_STATIC_SVC_DECLARE (Logger_Service) ACE_FACTORY_DECLARE (CIAO_Logger, Logger_Service) #endif /*LOGGER_SERVICE_H_*/ |