00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #ifndef INCL_POSIX_LOG
00037 # define INCL_POSIX_LOG
00038
00040 #include <base/fscapi.h>
00041 #include <base/Log.h>
00042 #include "base/util/StringBuffer.h"
00043
00044 #include <stdio.h>
00045 #include <time.h>
00046 #include "base/globalsdef.h"
00047
00048 BEGIN_NAMESPACE
00049
00054 class POSIXLog : public Log {
00055 public:
00056
00057 POSIXLog();
00058 ~POSIXLog();
00059
00080 virtual void setLogFile(const char *path, const char* name, bool redirectStderr = false);
00081
00085 virtual FILE *getLogFile() { return logFile; }
00086
00092 virtual void setPrefix(const char *prefix) { this->prefix = prefix ? prefix : ""; }
00093 virtual const StringBuffer &getPrefix() const { return prefix; }
00094
00095 virtual void setLogPath(const char* configLogPath);
00096 virtual void setLogName(const char* configLogName);
00097 virtual void error(const char* msg, ...);
00098 virtual void info(const char* msg, ...);
00099 virtual void developer(const char* msg, ...);
00100 virtual void debug(const char* msg, ...);
00101 virtual void reset(const char* title = NULL);
00102 virtual size_t getLogSize();
00103
00104 protected:
00120 virtual void printLine(bool firstLine,
00121 time_t time,
00122 const char *fullTime,
00123 const char *shortTime,
00124 const char *utcTime,
00125 LogLevel level,
00126 const char *levelPrefix,
00127 const char *line);
00128
00129 private:
00130 FILE* logFile;
00131 bool logFileStdout;
00132 StringBuffer logName;
00133 StringBuffer logPath;
00134 bool logRedirectStderr;
00135
00137 int fderr;
00138
00142 StringBuffer prefix;
00143
00144 void printMessage(LogLevel level, const char* levelPrefix, const char* msg, va_list argList);
00145 };
00146
00147 #define POSIX_LOG ((POSIXLog &)Log::instance())
00148
00149
00150 END_NAMESPACE
00151
00153 #endif