Skip to content
Snippets Groups Projects
Commit 8ee13551 authored by stefan's avatar stefan
Browse files

LogSink, fixes for Windows

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@2612 5a81b35b-ba03-0410-adc8-b2c5c5119f08
parent a00513a3
Branches
No related tags found
No related merge requests found
...@@ -31,9 +31,9 @@ ...@@ -31,9 +31,9 @@
namespace ost { namespace ost {
namespace { namespace impl{
class DevNull: public std::streambuf { class DLLEXPORT DevNull: public std::streambuf {
protected: protected:
virtual int_type overflow(int_type c) {return c;} virtual int_type overflow(int_type c) {return c;}
virtual std::streamsize xsputn(const char* s, std::streamsize num) {return num;} virtual std::streamsize xsputn(const char* s, std::streamsize num) {return num;}
...@@ -41,7 +41,7 @@ namespace { ...@@ -41,7 +41,7 @@ namespace {
} // anon ns } // anon ns
class DLLEXPORT_OST_BASE LogSink { class DLLEXPORT LogSink {
public: public:
LogSink(){}; LogSink(){};
virtual ~LogSink() { } virtual ~LogSink() { }
...@@ -50,18 +50,21 @@ public: ...@@ -50,18 +50,21 @@ public:
typedef boost::shared_ptr<LogSink> LogSinkPtr; typedef boost::shared_ptr<LogSink> LogSinkPtr;
class DLLEXPORT_OST_BASE NullLogSink : public LogSink { class DLLEXPORT NullLogSink : public LogSink {
public: public:
NullLogSink():null_(new DevNull()){} NullLogSink():null_(new impl::DevNull()){}
virtual void LogMessage(const String& message, int severity){null_ << message;} virtual void LogMessage(const String& message, int severity){null_ << message;}
~NullLogSink(){
null_.flush();
delete null_.rdbuf();
}
private: private:
std::ostream null_; std::ostream null_;
}; };
typedef boost::shared_ptr<NullLogSink> NullLogSinkPtr; typedef boost::shared_ptr<NullLogSink> NullLogSinkPtr;
class DLLEXPORT_OST_BASE StdLogSink : public LogSink { class DLLEXPORT StdLogSink : public LogSink {
public: public:
StdLogSink(std::ostream& stream):stream_(stream){} StdLogSink(std::ostream& stream):stream_(stream){}
virtual void LogMessage(const String& message, int severity){ virtual void LogMessage(const String& message, int severity){
...@@ -72,7 +75,7 @@ private: ...@@ -72,7 +75,7 @@ private:
std::ostream& stream_; std::ostream& stream_;
}; };
class DLLEXPORT_OST_BASE FileLogSink : public LogSink { class DLLEXPORT FileLogSink : public LogSink {
public: public:
FileLogSink(const String& file_name):stream_(file_name.c_str(), std::ios::out){} FileLogSink(const String& file_name):stream_(file_name.c_str(), std::ios::out){}
virtual void LogMessage(const String& message, int severity){ virtual void LogMessage(const String& message, int severity){
...@@ -83,7 +86,7 @@ public: ...@@ -83,7 +86,7 @@ public:
} }
~FileLogSink(){ ~FileLogSink(){
stream_.close(); stream_.flush();
} }
private: private:
std::ofstream stream_; std::ofstream stream_;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment