WvStreams
|
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