FileLogger.h++
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __ccxx_FileLogger_hxx
00024 #define __ccxx_FileLogger_hxx
00025
00026 #include <commonc++/Common.h++>
00027 #include <commonc++/File.h++>
00028 #include <commonc++/IOException.h++>
00029 #include <commonc++/Logger.h++>
00030 #include <commonc++/String.h++>
00031
00032 namespace ccxx {
00033
00040 class COMMONCPP_API FileLogger : public Logger
00041 {
00042 public:
00043
00053 FileLogger(const String &format = "[%d %t] %m", size_t maxLogSize = 2048,
00054 uint_t rotateCount = 1);
00055
00057 virtual ~FileLogger();
00058
00065 virtual bool setFile(const String &dir, const String &name);
00066
00071 void setMaxLogSize(size_t maxLogSize);
00072
00079 void setRotateCount(uint_t rotateCount);
00080
00082 static const uint_t MAX_ROTATE_COUNT;
00083
00084 protected:
00085
00087 virtual void openFile() throw(IOException);
00088
00090 virtual bool write(CharBuffer &buffer);
00091
00093 bool _rotate();
00094
00095 int64_t _maxFileSize;
00096 size_t _maxLogSize;
00097 size_t _curLogSize;
00098 uint_t _rotateCount;
00099
00100 File * _file;
00101 String _dir;
00102 String _name;
00104 };
00105
00106 };
00107
00108 #endif // __ccxx_FileLogger_hxx
00109
00110