00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef RESOURCEPOOL_STREAMLOGGER_HH
00025 #define RESOURCEPOOL_STREAMLOGGER_HH
00026
00027 #include <iostream>
00028 #include <time.h>
00029
00030 #include "POSIX/sys/timeval.hh"
00031 #include "ResourcePool/ResourcePoolEventObserver.hh"
00032
00033 namespace fatalmind {
00034
00043 class ResourcePoolStreamLogger: public ResourcePoolEventObserver {
00044 public:
00045 ResourcePoolStreamLogger(std::ostream& a_os)
00046 : ResourcePoolEventObserver()
00047 , os(a_os)
00048 {
00049 }
00050
00051 virtual void event(event_t eventID, const std::string& resourceID = NoResourceID, const std::string& message = "N/A") {
00052 if ((logevents & eventID) != 0) {
00053 if (logevents & Event.TIME_HIRES) {
00054 ::POSIX::timeval t;
00055 struct timezone tz;
00056 gettimeofday(&t, &tz);
00057 os << t << ";" << getEventName(eventID) << ';' << resourceID << ';' << message << std::endl;
00058 } else {
00059 os << time(NULL) << ";" << getEventName(eventID) << ';' << resourceID << ';' << message << std::endl;
00060 }
00061 }
00062 };
00063
00064 static ResourcePoolStreamLogger defaultLogger;
00065
00066 protected:
00067 virtual Clone* DoClone() const {
00068 return new ResourcePoolStreamLogger(*this);
00069 }
00070 private:
00071 std::ostream& os;
00072 };
00073
00074 }
00075 #endif