我正在开发客户端服务器应用程序。我们有从服务器发送和查询数据的协议格式。现在我需要在日志文件中记录来自或发往服务器的数据。我正在使用最新版本的 Log4cxx。但是这个二进制数据也包含空字符。
一条消息是这样的:
ab 40 01 00 00 00 ff f0 00 00 00 00 09 01 01 07 00 00 c0 a8 04 54 ae。
首先我尝试使用 char* pMsg 然后我使用 std string str(pMsg ) 做了类似的事情都不起作用。
然后我做了这样的事情
char chMsg[MAX_PATH];
while(i<nBuffLen)
{
chMsg[i] = *(pMsgBuff+i);
i++;
}
所有的方法都失败了,结果是
- 它正确打印前三个字节,之后没有。
- 有时调用 LOG4CXX_INFO 会使应用程序崩溃。
我正在使用 LOG4CXX_INFO 宏来记录信息。
这似乎是由于第四个字段中的 NULL 字符。我发现这个链接声称已经解决了这个问题,但我用 LOG4CXX_INFO 尝试了相同的代码,它崩溃了。 https://issues.apache.org/jira/browse/LOGCXX-162
锄头来解决这个问题?