diff options
Diffstat (limited to 'CIAO/DAnCE/Logger/File_Logger_Backend.cpp')
-rw-r--r-- | CIAO/DAnCE/Logger/File_Logger_Backend.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/CIAO/DAnCE/Logger/File_Logger_Backend.cpp b/CIAO/DAnCE/Logger/File_Logger_Backend.cpp new file mode 100644 index 00000000000..2741afe830f --- /dev/null +++ b/CIAO/DAnCE/Logger/File_Logger_Backend.cpp @@ -0,0 +1,46 @@ + +#include "File_Logger_Backend.h" +#include "ace/OS.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 ((LM_DEBUG, "[%M] 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 += this->filename_; + 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 res = log_record.print (0, ACE_Log_Msg::VERBOSE, this->fh_); + ACE_OS::fflush (this->fh_); + return res; + } + +} + |