1 /*
2  * RollingFileAppender.hh
3  *
4  * See the COPYING file for the terms of usage and distribution.
5  */
6 
7 #ifndef _LOG4SHIB_ROLLINGFILEAPPENDER_HH
8 #define _LOG4SHIB_ROLLINGFILEAPPENDER_HH
9 
10 #include <log4shib/Portability.hh>
11 #include <log4shib/FileAppender.hh>
12 #include <string>
13 #include <stdarg.h>
14 
15 namespace log4shib {
16 
17     /**
18        RollingFileAppender is a FileAppender that rolls over the logfile once
19        it has reached a certain size limit.
20        @since 0.3.1
21     **/
22     class LOG4SHIB_EXPORT RollingFileAppender : public FileAppender {
23         public:
24         RollingFileAppender(const std::string& name,
25                             const std::string& fileName,
26                             size_t maxFileSize = 10*1024*1024,
27                             unsigned int maxBackupIndex = 1,
28                             bool append = true,
29                             mode_t mode = 00644);
30 
31         virtual void setMaxBackupIndex(unsigned int maxBackups);
32         virtual unsigned int getMaxBackupIndex() const;
33         virtual void setMaximumFileSize(size_t maxFileSize);
34         virtual size_t getMaxFileSize() const;
35 
36         virtual void rollOver();
37 
38         protected:
39         virtual void _append(const LoggingEvent& event);
40 
41         unsigned int _maxBackupIndex;
42         size_t _maxFileSize;
43     };
44 }
45 
46 #endif // _LOG4SHIB_ROLLINGFILEAPPENDER_HH
47