使用RfileLogger在真机上通过Log进行事件跟踪

使用RfileLogger在真机上通过Log进行事件跟踪

From Forum Nokia Wiki

适用版本

 S60 2nd Edition , S60 3rd Edition

我们经常会碰到这样的情况:程序在模拟器上运行的很好,但是到手机上运行却出现莫名其妙的错误,程序留下一个“系统错误”就退出了,虽然我们可以通过返回的错误码知道大概的错误类型,但是要通过错误码来推测确切的错误所在似乎非常困难,如果能通过log文件把程序运行的路径记录下来,对我们定位错误会有非常大的帮助,对此symbian为我们提供了RfileLogger类实现这个功能。如前所讲,RfileLogger类就是用于实现在需要的时候提供事件记录的工具,如其名字所示,RfileLogger是一个资源类,使用之前必须要连接服务器,然后必须创建一个用于记录事件的文件,该函数为CreateLog,含有3个参数,第一个参数是用于指定存放log文件的文件夹名(相对于C:/Logs路径),第二个参数是log文件名,第三个参数指定了对log文件操作的方式(EFileLoggingModeOverwrite 是覆盖方式, EfileLoggingModeAppend是追加方式),下面是初始化RfileLogger的一个实例:

 RFileLogger iLog;
 iLog.Connect();   //连接服务器
 iLog.CreateLog(_L("LogDirectory"),_L("LogFile"),EFileLoggingModeOverwrite);  //创建log文件

注意:文件夹路径是相对C:/Logs的,并且最后不需要加’/’结束符,因此以上例子中的存放log文件的完整路径为C:/Logs/LogDirectory,另外不要忘了在你的mmp文件中包含必须的flogger.lib库,同时flogger.h头文件也是必需的。使用完以后我们要关闭log文件以及RfileLogger实例与服务器的连接:

 iLog.CloseLog();  //关闭log文件
 iLog.Close();  //关闭连接

通常可以把初始化代码放在需要跟踪类的ConstructL()里,把关闭log的代码放在该类的析构函数中。创建RfileLogger实例以后,就可以使用log函数对指定的log文件进行log输出了,输出函数有以下3种:

     Log函数                                          log文件中的输出
 iLog.Write(_L("MyLog"))                         11/07/2003 4:00:13 MyLog
 iLog.WriteFormat(_L("Number=%d"),number)        11/07/2003 4:00:13 Number=0     
 iLog.HexDump(aHeader,aHeader,myPtr,4)           11/07/2003 4:00:13 myBuf:0000: 41 42 00 44 AB.D

同时你可以通过SetDateAndTime函数设置是否需要输出时间和数据,该函数原型为:

 void SetDateAndTime(TBool aUseDate, TBool aUseTime).

最后提醒一点,C:/Logs路径并不是系统自动创建的,如果你需要进行log输出,必须手动创建存放log文件的完整路径,在以上的例子中为C:/Logs/LogDirectory,然后运行程序就可以生成相应的log文件了,如果你不需要进行log跟踪了,只要删除这个文件夹就可以了。


best regards

davey_2

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值