summaryrefslogtreecommitdiff
path: root/CIAO/DAnCE/Logger/File_Logger_Backend.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'CIAO/DAnCE/Logger/File_Logger_Backend.cpp')
-rw-r--r--CIAO/DAnCE/Logger/File_Logger_Backend.cpp46
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;
+ }
+
+}
+