1 现象:问题描述
在完成A项目的"OSTA移植"功能的过程中,发现server模块运行正常,各个流程的消息收发也正常,但是,在运行过程中产生的svc日志中含有乱码
2 关键过程:根本原因分析
既然业务流程正常,那么,估计应该是日志打印部分的代码有问题。仔细观察上面的日志,发现所有的乱码都是在打印其中3个字段时出现(日志的彩色部分)。这3个字段分别是:
? Sndr
? SessID
? MsgID
既然这么有规律,那么就看看代码中打印日志的地方。SERVER中打印业务日志的地方很几种,在srvsvclogproc.cpp文件中。下面是打印MM1_Submit.REQ日志的函数:
void CSrvSvcLogProc::EnterMM1SubmitReqSvclog( CMM1SubmitReq * pMM1SubmitReq,
CSrvSessWrapper & rSrvSessWrapper )
{
CMmsAddress MSISDN = pMM1SubmitReq->GetHttpHeadInfo().GetXMmsMSISDN();
CSrvAdjustOfOriginMsgAddr::AdjustSingleAddress( MSISDN );
const char * pMSISDN = MSISDN.GetAddressStr().c_str();
const char * pFrom = rSrvSessWrapper->GetFromForLog().GetAddressStr().c_str();
MMS_INT32 iSequenceNum = pMM1SubmitReq->GetSequence();
const char * pSessionID = rSrvSessWrapper->GetSessionID().c_str();
const char * pMessageID = rSrvSessWrapper->GetXMmsMessageID().c_str();
const char * pTranscationID = pMM1SubmitReq->GetstrXMmsTransactionID().c_str();
………………
CMmsAddrPointerList::iterator Iter;
for (Iter = RcptCheckList.begin(); Iter != RcptCheckList.end(); Iter++)
{
CMmsAddrList::iterator RcptAddrIter = ( CMmsAddrList::iterator )( *Iter );
pReceiver = RcptAddrIter->GetAddressStr().c_str();
// BEGIN: Added by yangwen29380, 2005/8/13 问题单号:DNYGD05184
// 修改日志输出方式:改成实时输出
//SENDMAINTAININFO_NEW( ( FL, "[%s:%s][%s:%s][%s:%s][%s:%s][%s:%s][%s:%d][%s:%s][%s:%s][%s:%s][%s:%s][%s:%s][%s:%s][%s:%s][%s:%s];"
SENDMAINTAININFO( FL, "[%s:%s][%s:%s][%s:%s][%s:%s][%s:%s][%s:%d][%s:%s][%s:%s][%s:%s][%s:%s][%s:%s][%s:%s][%s:%s][%s:%s];"
" %s:%s; %s:%s; %s:%s; %s:%s; %s:%d %s;",
DEF_SVCLOG_LogTypeTag, g_pStrSvcLogType[EN_SVC_LOG_FIRST_SERVICE_MSG],
阅读(441) | 评论(0) | 转发(0) |