×
Namespaces

Variants
Actions

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

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

兼容于
平台:
Symbian

文章
User:Davey 2 在 09 Nov 2007 创建
最后由 hamishwillee 在 08 May 2013 编辑

适用版本

 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

This page was last modified on 8 May 2013, at 03:01.
63 page views in the last 30 days.
×