@@ -35,7 +35,16 @@ class LogInfo
3535 }
3636
3737 template <typename T>
38- LogInfo& operator << (const T& data);
38+ LogInfo& operator << (const T& data)
39+ {
40+ std::stringstream stream;
41+ stream << data;
42+
43+ m_buf += stream.str ().c_str ();
44+ printf (m_buf);
45+ return *this ;
46+ }
47+
3948
4049private:
4150 bool bAuto = false ;
@@ -115,7 +124,7 @@ class CLoggerServer
115124 return 0 ;
116125 }
117126
118- // 给其他非日志进程和线程使用的
127+ // 给其他非日志进程和线程使用的
119128 static void Trace (const LogInfo& info)
120129 {
121130 static thread_local CLocalSocket client;
@@ -138,7 +147,7 @@ class CLoggerServer
138147 }
139148 }
140149 ret = client.Send (info);
141- printf (" %s(%d):<%s> pid = %d errno = %d msg:%s ret = %d\n " , __FILE__, __LINE__, __FUNCTION__, getpid (), errno, strerror (errno),ret);
150+ printf (" %s(%d):<%s> pid = %d errno = %d msg:%s ret = %d\n " , __FILE__, __LINE__, __FUNCTION__, getpid (), errno, strerror (errno),ret);// 这里ret零
142151 }
143152 static Buffer GetTimeStr ()
144153 {
@@ -176,6 +185,7 @@ class CLoggerServer
176185 }
177186 if (ret > 0 )
178187 {
188+ // 我在给你跑一边,我把连接和发送设置一个延时你看清楚一些
179189 printf (" %s(%d):<%s> pid = %d errno = %d msg:%s \n " , __FILE__, __LINE__, __FUNCTION__, getpid (), errno, strerror (errno));
180190 size_t i = 0 ;
181191 for (; i < ret; i++)
@@ -187,9 +197,11 @@ class CLoggerServer
187197 }
188198 if (events[i].events & EPOLLIN)
189199 {
190- printf (" %s(%d):<%s> pid = %d errno = %d msg:%s epollin =%s\n " , __FILE__, __LINE__, __FUNCTION__, getpid (), errno, strerror (errno), " ============检测到epollin事件" );
200+ char buff[] = " ============检测到epollin事件=============================\n " ;
201+ printf (" %s" , buff);
191202 if (events[i].data .ptr == m_pServer)
192203 {
204+ // 创建的新的接收数据的服务端
193205 CSocketBase* pClient = NULL ;
194206 int r = m_pServer->Link (&pClient);
195207 printf (" %s(%d):<%s> pid = %d errno = %d msg:%s ret = %d\n " , __FILE__, __LINE__, __FUNCTION__, getpid (), errno, strerror (errno), r);
@@ -203,23 +215,32 @@ class CLoggerServer
203215 delete pClient;
204216 continue ;
205217 }
218+ printf (" %s(%d):<%s> pid = %d errno = %d msg:%s \n " , __FILE__, __LINE__, __FUNCTION__, getpid (), errno, strerror (errno));
206219 auto it = mapClients.find (*pClient);
207- if (it->second != NULL )
220+ printf (" %s(%d):<%s> pid = %d errno = %d msg:%s \n " , __FILE__, __LINE__, __FUNCTION__, getpid (), errno, strerror (errno));
221+ if (it->second != NULL && it != mapClients.end ())
208222 {
223+ printf (" %s(%d):<%s> pid = %d errno = %d msg:%s \n " , __FILE__, __LINE__, __FUNCTION__, getpid (), errno, strerror (errno));
209224 delete it->second ;
225+
210226 }
211227 mapClients[*pClient] = pClient;
212-
228+ printf (" %s(%d):<%s> pid = %d errno = %d msg:%s \n " , __FILE__, __LINE__, __FUNCTION__, getpid (), errno, strerror (errno));
229+ // 我看一下走没走玩这个if语句
230+ // 我好像找到问题了
231+ // 这个if好像卡在那里了,都没有走到这里是的,
232+ // 我加个日志看看哪里死了还是卡住了
233+ printf (" %s(%d):<%s> pid = %d errno = %d msg:%s \n " , __FILE__, __LINE__, __FUNCTION__, getpid (), errno, strerror (errno));
213234 }
214235 else
215236 {
237+ // 没有进入到else中 也就是没有收到send,send的位置在哪
216238 printf (" %s(%d):<%s> pid = %d errno = %d msg:%s ret = %d\n " , __FILE__, __LINE__, __FUNCTION__, getpid (), errno, strerror (errno), ret);
217239 CSocketBase* pClient = (CSocketBase*)events[i].data .ptr ;
218240 if (pClient != NULL )
219241 {
220242 Buffer data (1024 * 1024 );
221- int r = pClient->Recv (data);
222- printf (" %s(%d):<%s> pid = %d errno = %d msg:%s \n " , __FILE__, __LINE__, __FUNCTION__, getpid (), errno, strerror (errno));
243+ int r = pClient->Recv (data);
223244 if (r <= 0 )
224245 {
225246 printf (" %s(%d):<%s> pid = %d errno = %d msg:%s ret = %d\n " , __FILE__, __LINE__, __FUNCTION__, getpid (), errno, strerror (errno), ret);
@@ -262,9 +283,13 @@ class CLoggerServer
262283 return ;
263284 }
264285 FILE* pfile = m_file;
265- fwrite ((char *)data, 1 , data.size (), pfile);
286+ std::string str;
287+ str.resize (data.size ());
288+ memcpy ((char *)str.c_str (), data.c_str (), data.size ());
289+ printf (" 我要开始写入日志了 ==================================================== msg:%s\n " , str.c_str ());
290+ fwrite ((char *)str.c_str (), 1 , str.size (), pfile);
266291 fflush (pfile);
267- printf (" %s" , ( char *) data);
292+ printf (" %s" , data);
268293 }
269294
270295
@@ -293,18 +318,9 @@ class CLoggerServer
293318#define LOGF LogInfo (__FILE__, __LINE__,__FUNCTION__, getpid(), pthread_self(),LOG_FATAL)
294319
295320// 01 02 03 A1 ... ...
296- #define DUMPI (data, size ) LogInfo(__FILE__,__LINE__, __FUNCTION__, getpid(),pthread_self(), LOG_INFO, data, size)
297- #define DUMPD (data, size ) LogInfo(__FILE__,__LINE__, __FUNCTION__, getpid(),pthread_self(), LOG_DEBUG, data, size)
298- #define DUMPW (data, size ) LogInfo(__FILE__,__LINE__, __FUNCTION__, getpid(),pthread_self(), LOG_WARNING, data, size)
299- #define DUMPE (data, size ) LogInfo(__FILE__,__LINE__, __FUNCTION__, getpid(),pthread_self(), LOG_ERROR, data, size)
300- #define DUMPF (data, size ) LogInfo(__FILE__,__LINE__, __FUNCTION__, getpid(),pthread_self(), LOG_FATAL, data, size)
321+ #define DUMPI (data, size ) CLoggerServer::Trace( LogInfo(__FILE__,__LINE__, __FUNCTION__, getpid(),pthread_self(), LOG_INFO, data, size) )
322+ #define DUMPD (data, size ) CLoggerServer::Trace( LogInfo(__FILE__,__LINE__, __FUNCTION__, getpid(),pthread_self(), LOG_DEBUG, data, size) )
323+ #define DUMPW (data, size ) CLoggerServer::Trace( LogInfo(__FILE__,__LINE__, __FUNCTION__, getpid(),pthread_self(), LOG_WARNING, data, size) )
324+ #define DUMPE (data, size ) CLoggerServer::Trace( LogInfo(__FILE__,__LINE__, __FUNCTION__, getpid(),pthread_self(), LOG_ERROR, data, size) )
325+ #define DUMPF (data, size ) CLoggerServer::Trace( LogInfo(__FILE__,__LINE__, __FUNCTION__, getpid(),pthread_self(), LOG_FATAL, data, size) )
301326#endif
302-
303- template <typename T>
304- inline LogInfo& LogInfo::operator <<(const T& data)
305- {
306- std::stringstream stream;
307- stream << data;
308- m_buf += stream.str ();
309- return *this ;
310- }
0 commit comments