00001
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 #ifdef _MSC_VER
00033 #pragma warning(disable:4786)
00034 #endif
00035 #include "ISocketHandler.h"
00036 #include "StdoutLog.h"
00037 #include <stdio.h>
00038
00039 #ifdef SOCKETS_NAMESPACE
00040 namespace SOCKETS_NAMESPACE {
00041 #endif
00042
00043
00044
00045
00046 void StdoutLog::error(ISocketHandler *,Socket *sock,const std::string& call,int err,const std::string& sys_err,loglevel_t lvl)
00047 {
00048 if (lvl < m_min_level)
00049 return;
00050 char dt[40];
00051 time_t t = time(NULL);
00052 #ifdef __CYGWIN__
00053 struct tm *tp = localtime(&t);
00054 sprintf(dt, "%d-%02d-%02d %02d:%02d:%02d",
00055 tp -> tm_year + 1900,
00056 tp -> tm_mon + 1,
00057 tp -> tm_mday,
00058 tp -> tm_hour,tp -> tm_min,tp -> tm_sec);
00059 #else
00060 struct tm tp;
00061 #if defined( _WIN32) && !defined(__CYGWIN__)
00062 localtime_s(&tp, &t);
00063 #else
00064 localtime_r(&t, &tp);
00065 #endif
00066 sprintf(dt, "%d-%02d-%02d %02d:%02d:%02d",
00067 tp.tm_year + 1900,
00068 tp.tm_mon + 1,
00069 tp.tm_mday,
00070 tp.tm_hour,tp.tm_min,tp.tm_sec);
00071 #endif
00072 std::string level;
00073
00074 switch (lvl)
00075 {
00076 case LOG_LEVEL_WARNING:
00077 level = "Warning";
00078 break;
00079 case LOG_LEVEL_ERROR:
00080 level = "Error";
00081 break;
00082 case LOG_LEVEL_FATAL:
00083 level = "Fatal";
00084 break;
00085 case LOG_LEVEL_INFO:
00086 level = "Info";
00087 break;
00088 }
00089 if (sock)
00090 {
00091 printf("%s :: fd %d :: %s: %d %s (%s)\n",
00092 dt,
00093 sock -> GetSocket(),
00094 call.c_str(),err,sys_err.c_str(),level.c_str());
00095 }
00096 else
00097 {
00098 printf("%s :: %s: %d %s (%s)\n",
00099 dt,
00100 call.c_str(),err,sys_err.c_str(),level.c_str());
00101 }
00102 }
00103
00104
00105 #ifdef SOCKETS_NAMESPACE
00106 }
00107 #endif
00108
00109