您的位置:首页 > 其它

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

2008-07-01 14:19 218 查看

使用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

Retrieved from "http://wiki.forum.nokia.com/index.php/%E4%BD%BF%E7%94%A8RfileLogger%E5%9C%A8%E7%9C%9F%E6%9C%BA%E4%B8%8A%E9%80%9A%E8%BF%87Log%E8%BF%9B%E8%A1%8C%E4%BA%8B%E4%BB%B6%E8%B7%9F%E8%B8%AA"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐