WvStreams
wvlogfile.h
00001 /* -*- Mode: C++ -*-
00002  * Worldvisions Weaver Software:
00003  *   Copyright (C) 1997-2002 Net Integration Technologies, Inc.
00004  *
00005  * A "Log Receiver" that logs messages to a file 
00006  */
00007 
00008 #ifndef __WVLOGFILE_H
00009 #define __WVLOGFILE_H
00010 
00011 #include "wvfile.h"
00012 #include "wvlogrcv.h"
00013 
00016 class WvLogFileBase : public WvLogRcv, public WvFile
00017 {
00018 public:
00019     WvLogFileBase(WvStringParm _filename,
00020                   WvLog::LogLevel _max_level = WvLog::NUM_LOGLEVELS);
00021     
00022     // run fsync() every so many log messages.  0 never fsyncs.
00023     int fsync_every;
00024 
00025 protected:
00026     WvLogFileBase(WvLog::LogLevel _max_level);
00027     virtual void _make_prefix(time_t now_sec); 
00028     virtual void _mid_line(const char *str, size_t len);
00029     virtual void _end_line();
00030 
00031     int fsync_count;
00032 };
00033 
00034 
00037 class WvLogFile : public WvLogFileBase
00038 {
00039 public:
00040     WvLogFile(WvStringParm _filename,
00041               WvLog::LogLevel _max_level = WvLog::NUM_LOGLEVELS,
00042               int _keep_for = 7, bool _force_new_line = false,
00043               bool _allow_append = true);
00044     
00045     WvString start_log();
00046 
00047 private:
00048     virtual void _make_prefix(time_t now_sec); 
00049     int keep_for, last_day;
00050     WvString filename;
00051     bool allow_append;
00052 
00053 public:
00054     const char *wstype() const { return "WvLogFileBase"; }
00055 };
00056 
00057 #endif // __WVLOGFILE_H