Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
饺子大魔王的男人
engine2.0
提交
04cbcc1f
E
engine2.0
项目概览
饺子大魔王的男人
/
engine2.0
与 Fork 源项目一致
Fork自
xc13262215230 / engine2.0
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
E
engine2.0
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
04cbcc1f
编写于
4月 09, 2023
作者:
X
xuchi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
升级日志系统支持临时字符串变量:异步日志系统输出
上级
dd287cb3
变更
26
展开全部
隐藏空白更改
内联
并排
Showing
26 changed file
with
224 addition
and
560 deletion
+224
-560
engine2.0/engine2.0/Depends/include/Log.hpp
engine2.0/engine2.0/Depends/include/Log.hpp
+45
-15
engine2.0/engine2.0/Doc/Record.txt
engine2.0/engine2.0/Doc/Record.txt
+5
-0
engine2.0/engine2.0/EasyClient/clientLog.txt
engine2.0/engine2.0/EasyClient/clientLog.txt
+0
-451
engine2.0/engine2.0/EasyServer/EasyServer.vcxproj.user
engine2.0/engine2.0/EasyServer/EasyServer.vcxproj.user
+4
-0
engine2.0/engine2.0/EasyServer/HelloCpp.log.txt
engine2.0/engine2.0/EasyServer/HelloCpp.log.txt
+0
-0
engine2.0/engine2.0/EasyServer/serverLog.txt
engine2.0/engine2.0/EasyServer/serverLog.txt
+32
-75
engine2.0/engine2.0/HelloCpp/HelloCpp.vcxproj
engine2.0/engine2.0/HelloCpp/HelloCpp.vcxproj
+76
-0
engine2.0/engine2.0/HelloCpp/HelloCpp.vcxproj.filters
engine2.0/engine2.0/HelloCpp/HelloCpp.vcxproj.filters
+22
-0
engine2.0/engine2.0/HelloCpp/HelloCpp.vcxproj.user
engine2.0/engine2.0/HelloCpp/HelloCpp.vcxproj.user
+4
-0
engine2.0/engine2.0/HelloCpp/main.cpp
engine2.0/engine2.0/HelloCpp/main.cpp
+27
-0
engine2.0/engine2.0/TestDemo/Debug/TestDemo.log
engine2.0/engine2.0/TestDemo/Debug/TestDemo.log
+0
-14
engine2.0/engine2.0/TestDemo/Debug/TestDemo.tlog/CL.read.1.tlog
...2.0/engine2.0/TestDemo/Debug/TestDemo.tlog/CL.read.1.tlog
+0
-0
engine2.0/engine2.0/TestDemo/Debug/TestDemo.tlog/CL.write.1.tlog
....0/engine2.0/TestDemo/Debug/TestDemo.tlog/CL.write.1.tlog
+0
-0
engine2.0/engine2.0/TestDemo/Debug/TestDemo.tlog/TestDemo.lastbuildstate
...e2.0/TestDemo/Debug/TestDemo.tlog/TestDemo.lastbuildstate
+0
-2
engine2.0/engine2.0/TestDemo/Debug/TestDemo.tlog/cl.command.1.tlog
.../engine2.0/TestDemo/Debug/TestDemo.tlog/cl.command.1.tlog
+0
-0
engine2.0/engine2.0/TestDemo/Debug/TestDemo.tlog/link.command.1.tlog
...ngine2.0/TestDemo/Debug/TestDemo.tlog/link.command.1.tlog
+0
-0
engine2.0/engine2.0/TestDemo/Debug/TestDemo.tlog/link.read.1.tlog
...0/engine2.0/TestDemo/Debug/TestDemo.tlog/link.read.1.tlog
+0
-0
engine2.0/engine2.0/TestDemo/Debug/TestDemo.tlog/link.write.1.tlog
.../engine2.0/TestDemo/Debug/TestDemo.tlog/link.write.1.tlog
+0
-0
engine2.0/engine2.0/TestDemo/Debug/main.obj
engine2.0/engine2.0/TestDemo/Debug/main.obj
+0
-0
engine2.0/engine2.0/TestDemo/Debug/vc120.idb
engine2.0/engine2.0/TestDemo/Debug/vc120.idb
+0
-0
engine2.0/engine2.0/TestDemo/Debug/vc120.pdb
engine2.0/engine2.0/TestDemo/Debug/vc120.pdb
+0
-0
engine2.0/engine2.0/TestDemo/TestDemo.vcxproj
engine2.0/engine2.0/TestDemo/TestDemo.vcxproj
+3
-2
engine2.0/engine2.0/TestDemo/main.c
engine2.0/engine2.0/TestDemo/main.c
+0
-1
engine2.0/engine2.0/engine2.0.sdf
engine2.0/engine2.0/engine2.0.sdf
+0
-0
engine2.0/engine2.0/engine2.0.sln
engine2.0/engine2.0/engine2.0.sln
+6
-0
engine2.0/engine2.0/engine2.0.v12.suo
engine2.0/engine2.0/engine2.0.v12.suo
+0
-0
未找到文件。
engine2.0/engine2.0/Depends/include/Log.hpp
浏览文件 @
04cbcc1f
...
...
@@ -2,8 +2,10 @@
#define _CELL_LOG_HPP_
//#include"CELL.hpp"
#include"Task.hpp"
#include<ctime>
#include "Task.hpp"
#include <ctime>
//#include <stdio.h>
namespace
doyou
{
namespace
io
{
// 增加两层命令空间,避免在其它项目应用时类名出现冲突
...
...
@@ -61,7 +63,7 @@ namespace doyou {
_logFile
=
nullptr
;
}
//
static
char
logPath
[
256
]
=
{};
char
logPath
[
256
]
=
{};
//
if
(
hasDate
)
{
...
...
@@ -74,7 +76,7 @@ namespace doyou {
sprintf
(
logPath
,
"%s.txt"
,
logName
);
}
//
//
文件指针
_logFile
=
fopen
(
logPath
,
mode
);
if
(
_logFile
)
{
...
...
@@ -94,9 +96,11 @@ namespace doyou {
template
<
typename
...
Args
>
// 函数模板
static
void
PError
(
const
char
*
pformat
,
Args
...
args
)
{
char
*
logStr
=
NewFormatStr
(
pformat
,
args
...);
#ifdef _WIN32 // 分析:如果windows和linux差异教大,总是采用宏来区分,是很坑的。所以,独做两套系统也很好。
auto
errCode
=
GetLastError
();
// 在网络消息收发线程中获取错误码
Instance
().
_taskServer
.
addTask
([
=
]()
{
// 在独立的日志任务线程中获取字符串信息
Instance
().
_taskServer
.
addTask
([
errCode
,
logStr
]()
{
// 在独立的日志任务线程中获取字符串信息
// 采用静态局部变量,生命周期与进程周期保持一致
static
char
text
[
256
]
=
{};
// 栈空间申请一个固定数组//char* text = nullptr; // 收发线程中执行:申请text内存
FormatMessageA
(
...
...
@@ -108,9 +112,11 @@ namespace doyou {
256
,
NULL
);
// ascii编码格式方式
EchoReal
(
true
,
"PError "
,
pformat
,
args
...
);
EchoReal
(
true
,
"PError "
,
"%s"
,
logStr
);
// 不换行,处理页面出现空行不规范场景
EchoReal
(
false
,
"PError "
,
"errno:%d, errmsg: %s"
,
errCode
,
text
);
// 实时打印日志
delete
[]
logStr
;
/*
// 分析:当前函数是在一个独立的线程中运行,所以,需要将释放text所申请内存的操作当作一个task任务
// 问题(目前还没有理解?):PError是在task线程队列中执行,所以,由其申请的资源的释放也应该添加到task任务队列中。
...
...
@@ -122,10 +128,11 @@ namespace doyou {
#else // linux系统
// 分析:多线程调用场景,尽量只获取一次,连续获取两次存在中间被修改的可能性
auto
errCode
=
errno
;
Instance
().
_taskServer
.
addTask
([
=
]()
{
// 在独立的日志任务线程中获取字符串信息
EchoReal
(
true
,
"PError "
,
pformat
,
args
...
);
// 提示信息
Instance
().
_taskServer
.
addTask
([
errCode
,
logStr
]()
{
// 在独立的日志任务线程中获取字符串信息
EchoReal
(
true
,
"PError "
,
"%s"
,
logStr
);
// 提示信息
EchoReal
(
false
,
"PError "
,
"errno<%d>, errmsg<%s>"
,
errCode
,
strerror
(
errCode
));
// linux:出现错误时机打印错误码和由错误码转化的错误信息
});
delete
[]
logStr
;
});
#endif
}
...
...
@@ -163,12 +170,12 @@ namespace doyou {
Echo
(
"Debug "
,
pformat
,
args
...);
}
static
void
Info
(
const
char
*
pStr
)
static
void
Info
(
const
char
*
pStr
)
// 函数重载:同一作用域中函数名相同,参数列表不同可构成函数重载
{
Info
(
"%s"
,
pStr
);
}
template
<
typename
...
Args
>
template
<
typename
...
Args
>
// 模板函数
static
void
Info
(
const
char
*
pformat
,
Args
...
args
)
{
Echo
(
"Info "
,
pformat
,
args
...);
...
...
@@ -178,13 +185,16 @@ namespace doyou {
template
<
typename
...
Args
>
static
void
Echo
(
const
char
*
type
,
const
char
*
pformat
,
Args
...
args
)
{
Log
*
pLog
=
&
Instance
();
pLog
->
_taskServer
.
addTask
([
=
]()
{
EchoReal
(
true
,
type
,
pformat
,
args
...);
char
*
logStr
=
NewFormatStr
(
pformat
,
args
...);
// 在delete之前使用都是有效的,传进来的可能是常量字符串,也可能临时字符串变量
Log
*
pLog
=
&
Instance
();
// 指针变量指向了一个静态对象,指针变量可以间接访问指向的对象
// 分析:采用匿名函数作为形参添加一个日志任务到任务队列中,这里只是匿名函数的函数定义,匿名函数的调用由日志线程触发
pLog
->
_taskServer
.
addTask
([
type
,
logStr
]()
{
// 匿名函数
EchoReal
(
true
,
type
,
"%s"
,
logStr
);
delete
[]
logStr
;
// 此处匿名函数调用结束,手动释放new资源,在日志线程中触发调用的
});
}
// 实时执行打印日志 增强功能:para2可以传空指针就不打印type信息的场景
// 实时执行打印日志 增强功能:para2可以传空指针就不打印type信息的场景
(业务逻辑执行线程中输出实时日志场景)
template
<
typename
...
Args
>
static
void
EchoReal
(
bool
br
,
const
char
*
type
,
const
char
*
pformat
,
Args
...
args
)
{
...
...
@@ -215,6 +225,26 @@ namespace doyou {
}
}
// 在日志终端输出和写入本地日志文件之前保存临时字符串变量值
// 返回指针一定要delete[]
// 在堆中实例化日志字符串对象
template
<
typename
...
Args
>
// 可变参数
static
char
*
NewFormatStr
(
const
char
*
pformat
,
Args
...
args
)
{
// 问题:当前系统不支持函数-snprintf
// 计算格式化字符串所需要的char字符数量(函数返回值)
// +1是为了预留位置,字符串结束符号标志'\0'
//size_t n = 1 + snprintf(nullptr, 0, pformat, args...);
//char* pFormatStr = new char[n]; // new/delete配套使用, 使用数组指针,在堆中实例化对象要程序员手动释放
//snprintf(pFormatStr, n, pformat, args...); // 将para3和para4整合后字符串指针赋值给para1
const
size_t
logLenMax
=
1024
*
1024
*
10
;
// 10M: 单次记录日志最大字节长度
char
*
pFormatStr
=
new
char
[
logLenMax
];
// new/delete配套使用, 使用数组指针,在堆中实例化对象要程序员手动释放
sprintf
(
pFormatStr
,
pformat
,
args
...);
return
pFormatStr
;
}
private:
FILE
*
_logFile
=
nullptr
;
TaskServer
_taskServer
;
// 打印日志比较耗时,所以作为了一个独立的线程执行
...
...
engine2.0/engine2.0/Doc/Record.txt
浏览文件 @
04cbcc1f
...
...
@@ -71,5 +71,10 @@ IP直接存入黑名单中,所以,服务端获取客户端IP地址很有意
在windows系统中,开启ipv6服务器,客户端连接该ipv6对应的ipv4是连接不上的。
在linux系统中,开启ipv6服务器,客户端可连接ipv4以及对应IPV6都可以连接上。
23.当前日志系统待处理问题:日志系统采用的是一个独立线程来记录日志,为了不影响业务逻辑
的执行效率,提高程序性能,这个一个异步日志系统设计。但是,调用日志打印接口是一个线程,
实际记录本地文件或终端输出是另一个线程,如果调用接口线程传入的是一个临时变量,在具体
输出日志线程在访问变量是很可能已经被系统回收,从而记录日志为乱码。
engine2.0/engine2.0/EasyClient/clientLog.txt
已删除
100644 → 0
浏览文件 @
dd287cb3
此差异已折叠。
点击以展开。
engine2.0/engine2.0/EasyServer/EasyServer.vcxproj.user
0 → 100644
浏览文件 @
04cbcc1f
<?xml version="1.0" encoding="utf-8"?>
<Project
ToolsVersion=
"12.0"
xmlns=
"http://schemas.microsoft.com/developer/msbuild/2003"
>
<PropertyGroup
/>
</Project>
\ No newline at end of file
engine2.0/engine2.0/EasyServer/HelloCpp.log.txt
0 → 100644
浏览文件 @
04cbcc1f
engine2.0/engine2.0/EasyServer/serverLog.txt
浏览文件 @
04cbcc1f
Info [2023-3-31 22:32:39]Log::setLogPath success,<serverLog.txt,w>
Error [2023-3-31 22:32:39]Config::getStr not find <strIP>
Info [2023-3-31 22:32:39]Config::getStr strIP=any
Error [2023-3-31 22:32:39]Config::getStr not find <nPort>
Info [2023-3-31 22:32:39]Config::getInt nPort=4567
Error [2023-3-31 22:32:39]Config::getStr not find <nThread>
Info [2023-3-31 22:32:39]Config::getInt nThread=1
Error [2023-3-31 22:32:39]Config::getStr not find <nSendBuffSize>
Info [2023-3-31 22:32:39]Config::getInt nSendBuffSize=10240
Error [2023-3-31 22:32:39]Config::getStr not find <nRecvBuffSize>
Info [2023-3-31 22:32:39]Config::getInt nRecvBuffSize=8192
Error [2023-3-31 22:32:39]Config::getStr not find <nMaxClient>
Info [2023-3-31 22:32:39]Config::getInt nMaxClient=65535
Info [2023-3-31 22:32:39]create socket<468> success...
Info [2023-3-31 22:32:39]bind port<4567> success...
Info [2023-3-31 22:32:39]listen port<468> success...
Info [2023-3-31 22:32:40]thread<1>,time<1.015804>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:32:41]thread<1>,time<1.012665>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:32:42]thread<1>,time<1.005641>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:32:43]thread<1>,time<1.010654>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:32:44]thread<1>,time<1.008968>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:32:45]thread<1>,time<1.000230>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:32:46]thread<1>,time<1.005774>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:32:47]thread<1>,time<1.003246>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:32:48]thread<1>,time<1.003917>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:32:49]thread<1>,time<1.011160>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:32:50]thread<1>,time<1.000848>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:32:51]thread<1>,time<1.003867>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:32:52]thread<1>,time<1.010758>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:32:53]thread<1>,time<1.001822>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:32:54]thread<1>,time<1.004321>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:32:55]thread<1>,time<1.004184>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:32:56]thread<1>,time<1.001536>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:32:57]thread<1>,time<1.000277>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:32:58]thread<1>,time<1.008580>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:32:59]thread<1>,time<1.007428>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:0]thread<1>,time<1.001152>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:1]thread<1>,time<1.010830>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:2]thread<1>,time<1.012891>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:3]thread<1>,time<1.006799>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:4]thread<1>,time<1.015240>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:5]thread<1>,time<1.014393>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:6]thread<1>,time<1.004565>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:7]thread<1>,time<1.000470>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:8]thread<1>,time<1.007870>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:9]thread<1>,time<1.015320>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:10]thread<1>,time<1.001293>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:11]thread<1>,time<1.009076>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:12]thread<1>,time<1.006654>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:13]thread<1>,time<1.002006>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:14]thread<1>,time<1.003960>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:15]thread<1>,time<1.002160>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:16]thread<1>,time<1.011077>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:17]thread<1>,time<1.004268>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:18]thread<1>,time<1.000327>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:19]thread<1>,time<1.009899>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:20]thread<1>,time<1.004248>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:22]thread<1>,time<1.010211>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:23]thread<1>,time<1.012928>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:24]thread<1>,time<1.003055>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:25]thread<1>,time<1.004246>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:26]thread<1>,time<1.012615>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:27]thread<1>,time<1.015721>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:28]thread<1>,time<1.012698>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:29]thread<1>,time<1.010806>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:30]thread<1>,time<1.000653>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:31]thread<1>,time<1.014312>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:32]thread<1>,time<1.010476>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:33]thread<1>,time<1.002941>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:34]thread<1>,time<1.016947>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:35]thread<1>,time<1.005236>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:36]thread<1>,time<1.003975>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:37]thread<1>,time<1.015653>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:38]thread<1>,time<1.010557>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-3-31 22:33:39]thread<1>,time<1.013520>,socket<468>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-4-8 22:38:18]Log::setLogPath success,<serverLog.txt,w>
Info [2023-4-8 22:38:18]a=500
Info [2023-4-8 22:38:18]the first string.
Info [2023-4-8 22:38:18]
Info [2023-4-8 22:38:18]
Info [2023-4-8 22:38:18]the four string.
Info [2023-4-8 22:38:18]Log::setLogPath _logFile != nullptr
Info [2023-4-8 22:38:18]Log::setLogPath success,<serverLog.txt,w>
Error [2023-4-8 22:38:18]Config::getStr not find <strIP>
Info [2023-4-8 22:38:18]Config::getStr strIP=any
Error [2023-4-8 22:38:18]Config::getStr not find <nPort>
Info [2023-4-8 22:38:18]Config::getInt nPort=4567
Error [2023-4-8 22:38:18]Config::getStr not find <nThread>
Info [2023-4-8 22:38:18]Config::getInt nThread=1
Error [2023-4-8 22:38:18]Config::getStr not find <nSendBuffSize>
Info [2023-4-8 22:38:18]Config::getInt nSendBuffSize=10240
Error [2023-4-8 22:38:18]Config::getStr not find <nRecvBuffSize>
Info [2023-4-8 22:38:18]Config::getInt nRecvBuffSize=8192
Error [2023-4-8 22:38:18]Config::getStr not find <nMaxClient>
Info [2023-4-8 22:38:18]Config::getInt nMaxClient=65535
Info [2023-4-8 22:38:18]create socket<460> success...
Info [2023-4-8 22:38:18]bind port<4567> success...
Info [2023-4-8 22:38:18]listen port<460> success...
Info [2023-4-8 22:38:19]thread<1>,time<1.001032>,socket<460>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-4-8 22:38:20]thread<1>,time<1.006342>,socket<460>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-4-8 22:38:21]thread<1>,time<1.005530>,socket<460>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-4-8 22:38:22]thread<1>,time<1.002741>,socket<460>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-4-8 22:38:23]thread<1>,time<1.014311>,socket<460>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-4-8 22:38:24]thread<1>,time<1.001247>,socket<460>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-4-8 22:38:25]thread<1>,time<1.014090>,socket<460>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-4-8 22:38:26]thread<1>,time<1.012529>,socket<460>,Accept<0>,Join<0>,recv<0>,msg<0>
Info [2023-4-8 22:38:27]thread<1>,time<1.004971>,socket<460>,Accept<0>,Join<0>,recv<0>,msg<0>
engine2.0/engine2.0/HelloCpp/HelloCpp.vcxproj
0 → 100644
浏览文件 @
04cbcc1f
<?xml version="1.0" encoding="utf-8"?>
<Project
DefaultTargets=
"Build"
ToolsVersion=
"12.0"
xmlns=
"http://schemas.microsoft.com/developer/msbuild/2003"
>
<ItemGroup
Label=
"ProjectConfigurations"
>
<ProjectConfiguration
Include=
"Debug|Win32"
>
<Configuration>
Debug
</Configuration>
<Platform>
Win32
</Platform>
</ProjectConfiguration>
<ProjectConfiguration
Include=
"Release|Win32"
>
<Configuration>
Release
</Configuration>
<Platform>
Win32
</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup
Label=
"Globals"
>
<ProjectGuid>
{14149BAD-FE3D-45FB-8DB8-831E4198C72D}
</ProjectGuid>
<RootNamespace>
HelloCpp
</RootNamespace>
</PropertyGroup>
<Import
Project=
"$(VCTargetsPath)\Microsoft.Cpp.Default.props"
/>
<PropertyGroup
Condition=
"'$(Configuration)|$(Platform)'=='Debug|Win32'"
Label=
"Configuration"
>
<ConfigurationType>
Application
</ConfigurationType>
<UseDebugLibraries>
true
</UseDebugLibraries>
<PlatformToolset>
v120
</PlatformToolset>
<CharacterSet>
MultiByte
</CharacterSet>
</PropertyGroup>
<PropertyGroup
Condition=
"'$(Configuration)|$(Platform)'=='Release|Win32'"
Label=
"Configuration"
>
<ConfigurationType>
Application
</ConfigurationType>
<UseDebugLibraries>
false
</UseDebugLibraries>
<PlatformToolset>
v120
</PlatformToolset>
<WholeProgramOptimization>
true
</WholeProgramOptimization>
<CharacterSet>
MultiByte
</CharacterSet>
</PropertyGroup>
<Import
Project=
"$(VCTargetsPath)\Microsoft.Cpp.props"
/>
<ImportGroup
Label=
"ExtensionSettings"
>
</ImportGroup>
<ImportGroup
Label=
"PropertySheets"
Condition=
"'$(Configuration)|$(Platform)'=='Debug|Win32'"
>
<Import
Project=
"$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"
Condition=
"exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')"
Label=
"LocalAppDataPlatform"
/>
</ImportGroup>
<ImportGroup
Label=
"PropertySheets"
Condition=
"'$(Configuration)|$(Platform)'=='Release|Win32'"
>
<Import
Project=
"$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"
Condition=
"exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')"
Label=
"LocalAppDataPlatform"
/>
</ImportGroup>
<PropertyGroup
Label=
"UserMacros"
/>
<PropertyGroup
Condition=
"'$(Configuration)|$(Platform)'=='Debug|Win32'"
>
<OutDir>
$(SolutionDir)../bin/$(Configuration)\
</OutDir>
<IntDir>
$(SolutionDir)../tmp/$(Configuration)\
</IntDir>
</PropertyGroup>
<ItemDefinitionGroup
Condition=
"'$(Configuration)|$(Platform)'=='Debug|Win32'"
>
<ClCompile>
<WarningLevel>
Level3
</WarningLevel>
<Optimization>
Disabled
</Optimization>
<SDLCheck>
false
</SDLCheck>
<AdditionalIncludeDirectories>
E:\files\技术doc\engine2.0\engine2.0\engine2.0\engine2.0\Depends\include
</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>
true
</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup
Condition=
"'$(Configuration)|$(Platform)'=='Release|Win32'"
>
<ClCompile>
<WarningLevel>
Level3
</WarningLevel>
<Optimization>
MaxSpeed
</Optimization>
<FunctionLevelLinking>
true
</FunctionLevelLinking>
<IntrinsicFunctions>
true
</IntrinsicFunctions>
<SDLCheck>
true
</SDLCheck>
</ClCompile>
<Link>
<GenerateDebugInformation>
true
</GenerateDebugInformation>
<EnableCOMDATFolding>
true
</EnableCOMDATFolding>
<OptimizeReferences>
true
</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile
Include=
"main.cpp"
/>
</ItemGroup>
<Import
Project=
"$(VCTargetsPath)\Microsoft.Cpp.targets"
/>
<ImportGroup
Label=
"ExtensionTargets"
>
</ImportGroup>
</Project>
\ No newline at end of file
engine2.0/engine2.0/HelloCpp/HelloCpp.vcxproj.filters
0 → 100644
浏览文件 @
04cbcc1f
<?xml version="1.0" encoding="utf-8"?>
<Project
ToolsVersion=
"4.0"
xmlns=
"http://schemas.microsoft.com/developer/msbuild/2003"
>
<ItemGroup>
<Filter
Include=
"源文件"
>
<UniqueIdentifier>
{4FC737F1-C7A5-4376-A066-2A32D752A2FF}
</UniqueIdentifier>
<Extensions>
cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
</Extensions>
</Filter>
<Filter
Include=
"头文件"
>
<UniqueIdentifier>
{93995380-89BD-4b04-88EB-625FBE52EBFB}
</UniqueIdentifier>
<Extensions>
h;hh;hpp;hxx;hm;inl;inc;xsd
</Extensions>
</Filter>
<Filter
Include=
"资源文件"
>
<UniqueIdentifier>
{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
</UniqueIdentifier>
<Extensions>
rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile
Include=
"main.cpp"
>
<Filter>
源文件
</Filter>
</ClCompile>
</ItemGroup>
</Project>
\ No newline at end of file
engine2.0/engine2.0/HelloCpp/HelloCpp.vcxproj.user
0 → 100644
浏览文件 @
04cbcc1f
<?xml version="1.0" encoding="utf-8"?>
<Project
ToolsVersion=
"12.0"
xmlns=
"http://schemas.microsoft.com/developer/msbuild/2003"
>
<PropertyGroup
/>
</Project>
\ No newline at end of file
engine2.0/engine2.0/HelloCpp/main.cpp
0 → 100644
浏览文件 @
04cbcc1f
#include "TcpIocpServer.hpp"
//#include "Log.hpp"
using
namespace
doyou
::
io
;
// 使用名称空间
int
main
()
{
Log
::
Instance
().
setLogPath
(
"HelloCpp.log"
,
"w"
,
false
);
CELLLog_Info
(
"a=%d"
,
500
);
// "a=%d"-是常量字符串,生命周期伴随程序执行的整个周期
{
std
::
string
log1
=
"the second string."
;
// 临时变量
char
log2
[]
=
"the third string."
;
// 临时变量
// 分析:指针变量log3指向了一个常量字符串的地址
const
char
*
log3
=
"the four string."
;
// 常量字符串,生命周期在整个程序执行过程中
Log
::
Info
(
"the first string."
);
// 常量字符串
Log
::
Info
(
log1
.
c_str
());
// 临时变量,出了作用域,变量会被回收
Log
::
Info
(
log2
);
// 临时变量
Log
::
Info
(
log3
);
// 常量字符串
}
Sleep
(
10000
);
// 等待异步日志输出-10s
return
0
;
}
engine2.0/engine2.0/TestDemo/Debug/TestDemo.log
已删除
100644 → 0
浏览文件 @
dd287cb3
生成启动时间为 2023/3/29 23:08:34。
1>项目“E:\files\技术doc\engine2.0\engine2.0\engine2.0\engine2.0\TestDemo\TestDemo.vcxproj”在节点 2 上(Rebuild 个目标)。
1>ClCompile:
D:\software\VC\bin\CL.exe /c /ZI /nologo /W3 /WX- /sdl /Od /Oy- /D _MBCS /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fo"Debug\\" /Fd"Debug\vc120.pdb" /Gd /TC /analyze- /errorReport:prompt main.c
main.c
1>e:\files\技术doc\engine2.0\engine2.0\engine2.0\engine2.0\testdemo\main.c(14): warning C4013: “system”未定义;假设外部返回 int
Link:
D:\software\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:"E:\files\技术doc\engine2.0\engine2.0\engine2.0\engine2.0\Debug\TestDemo.exe" /INCREMENTAL /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /DEBUG /PDB:"E:\files\技术doc\engine2.0\engine2.0\engine2.0\engine2.0\Debug\TestDemo.pdb" /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"E:\files\技术doc\engine2.0\engine2.0\engine2.0\engine2.0\Debug\TestDemo.lib" /MACHINE:X86 Debug\main.obj
TestDemo.vcxproj -> E:\files\技术doc\engine2.0\engine2.0\engine2.0\engine2.0\Debug\TestDemo.exe
1>已完成生成项目“E:\files\技术doc\engine2.0\engine2.0\engine2.0\engine2.0\TestDemo\TestDemo.vcxproj”(Rebuild 个目标)的操作。
生成成功。
已用时间 00:00:01.30
engine2.0/engine2.0/TestDemo/Debug/TestDemo.tlog/CL.read.1.tlog
已删除
100644 → 0
浏览文件 @
dd287cb3
Binary files a/engine2.0/engine2.0/TestDemo/Debug/TestDemo.tlog/CL.read.1.tlog and /dev/null differ
engine2.0/engine2.0/TestDemo/Debug/TestDemo.tlog/CL.write.1.tlog
已删除
100644 → 0
浏览文件 @
dd287cb3
Binary files a/engine2.0/engine2.0/TestDemo/Debug/TestDemo.tlog/CL.write.1.tlog and /dev/null differ
engine2.0/engine2.0/TestDemo/Debug/TestDemo.tlog/TestDemo.lastbuildstate
已删除
100644 → 0
浏览文件 @
dd287cb3
#TargetFrameworkVersion=v4.0:PlatformToolSet=v120:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit
Debug|Win32|E:\files\技术doc\engine2.0\engine2.0\engine2.0\engine2.0\|
engine2.0/engine2.0/TestDemo/Debug/TestDemo.tlog/cl.command.1.tlog
已删除
100644 → 0
浏览文件 @
dd287cb3
Binary files a/engine2.0/engine2.0/TestDemo/Debug/TestDemo.tlog/cl.command.1.tlog and /dev/null differ
engine2.0/engine2.0/TestDemo/Debug/TestDemo.tlog/link.command.1.tlog
已删除
100644 → 0
浏览文件 @
dd287cb3
Binary files a/engine2.0/engine2.0/TestDemo/Debug/TestDemo.tlog/link.command.1.tlog and /dev/null differ
engine2.0/engine2.0/TestDemo/Debug/TestDemo.tlog/link.read.1.tlog
已删除
100644 → 0
浏览文件 @
dd287cb3
Binary files a/engine2.0/engine2.0/TestDemo/Debug/TestDemo.tlog/link.read.1.tlog and /dev/null differ
engine2.0/engine2.0/TestDemo/Debug/TestDemo.tlog/link.write.1.tlog
已删除
100644 → 0
浏览文件 @
dd287cb3
Binary files a/engine2.0/engine2.0/TestDemo/Debug/TestDemo.tlog/link.write.1.tlog and /dev/null differ
engine2.0/engine2.0/TestDemo/Debug/main.obj
已删除
100644 → 0
浏览文件 @
dd287cb3
文件已删除
engine2.0/engine2.0/TestDemo/Debug/vc120.idb
已删除
100644 → 0
浏览文件 @
dd287cb3
文件已删除
engine2.0/engine2.0/TestDemo/Debug/vc120.pdb
已删除
100644 → 0
浏览文件 @
dd287cb3
文件已删除
engine2.0/engine2.0/TestDemo/TestDemo.vcxproj
浏览文件 @
04cbcc1f
...
...
@@ -39,8 +39,8 @@
</ImportGroup>
<PropertyGroup
Label=
"UserMacros"
/>
<PropertyGroup
Condition=
"'$(Configuration)|$(Platform)'=='Debug|Win32'"
>
<OutDir>
$(SolutionDir)
\..\bin\
$(Configuration)\
</OutDir>
<IntDir>
$(SolutionDir)
\..\tmp\
$(Configuration)\
</IntDir>
<OutDir>
$(SolutionDir)
../bin/
$(Configuration)\
</OutDir>
<IntDir>
$(SolutionDir)
../tmp/
$(Configuration)\
</IntDir>
</PropertyGroup>
<PropertyGroup
Condition=
"'$(Configuration)|$(Platform)'=='Release|Win32'"
>
<OutDir>
$(SolutionDir)\..\bin\$(Configuration)\
</OutDir>
...
...
@@ -51,6 +51,7 @@
<WarningLevel>
Level3
</WarningLevel>
<Optimization>
Disabled
</Optimization>
<SDLCheck>
true
</SDLCheck>
<AdditionalIncludeDirectories>
E:\files\技术doc\engine2.0\engine2.0\engine2.0\engine2.0\Depends\include;%(AdditionalIncludeDirectories)
</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>
true
</GenerateDebugInformation>
...
...
engine2.0/engine2.0/TestDemo/main.c
浏览文件 @
04cbcc1f
...
...
@@ -2,7 +2,6 @@
#pragma execution_character_set("utf-8")
#include <stdio.h>
void
main
()
{
int
a
=
0
;
...
...
engine2.0/engine2.0/engine2.0.sdf
浏览文件 @
04cbcc1f
无法预览此类型文件
engine2.0/engine2.0/engine2.0.sln
浏览文件 @
04cbcc1f
...
...
@@ -16,6 +16,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Engine1.0", "Engine1.0\Engi
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestDemo", "TestDemo\TestDemo.vcxproj", "{FF4CC1F1-6E8F-41D0-9D68-6F2FE967B93B}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HelloCpp", "HelloCpp\HelloCpp.vcxproj", "{14149BAD-FE3D-45FB-8DB8-831E4198C72D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
...
...
@@ -38,6 +40,10 @@ Global
{FF4CC1F1-6E8F-41D0-9D68-6F2FE967B93B}.Debug|Win32.Build.0 = Debug|Win32
{FF4CC1F1-6E8F-41D0-9D68-6F2FE967B93B}.Release|Win32.ActiveCfg = Release|Win32
{FF4CC1F1-6E8F-41D0-9D68-6F2FE967B93B}.Release|Win32.Build.0 = Release|Win32
{14149BAD-FE3D-45FB-8DB8-831E4198C72D}.Debug|Win32.ActiveCfg = Debug|Win32
{14149BAD-FE3D-45FB-8DB8-831E4198C72D}.Debug|Win32.Build.0 = Debug|Win32
{14149BAD-FE3D-45FB-8DB8-831E4198C72D}.Release|Win32.ActiveCfg = Release|Win32
{14149BAD-FE3D-45FB-8DB8-831E4198C72D}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
...
...
engine2.0/engine2.0/engine2.0.v12.suo
浏览文件 @
04cbcc1f
无法预览此类型文件
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录