×
Namespaces

Variants
Actions

用来在log文件记录debug信息的简单宏

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

文章
翻译:
huwell
最后由 hamishwillee 在 06 Aug 2012 编辑
  • 详细描述

RFileLogger累可以提供静态和非静态的方法用于记录log文件。使用一些简单的宏,我们就可以很方便的记录log文件


  • 解决方案

下列头文件必须包括在每个要向log文件写内容的源文件中。KLogsDir常量可以自己定义用于标识在C:\logs下包含的log文件


这个log只有在c:\logs\下面KLogsDir指定的目录存在时才会生成。这种方式下,只要通过移除目录即可保证log的打开或关闭,而无需重新编译整个文件。

#ifndef __FILELOGGER_H__
#define __FILELOGGER_H__
 
#include <e32std.h>
#include <flogger.h> // link against flogger.lib
 
_LIT( KLogsDir, "MYAPP");
_LIT( KLogFileName, "log.txt");
 
#define __LOGSTR_TOFILE(S) { _LIT(KTmpStr, S); RFileLogger::WriteFormat(KLogsDir(), KLogFileName(),
 
EFileLoggingModeAppend, KTmpStr()); }
#define __LOGSTR_TOFILE1(S, P0) { _LIT(KTmpStr, S); RFileLogger::WriteFormat(KLogsDir(), KLogFileName(),
 
EFileLoggingModeAppend, TRefByValue<const TDesC>(KTmpStr()),P0); }
#define __LOGSTR_TOFILE2(S, P0, P1) { _LIT(KTmpStr, S); RFileLogger::WriteFormat(KLogsDir(), KLogFileName(),
 
EFileLoggingModeAppend, TRefByValue<const TDesC>(KTmpStr()),P0,P1); }
 
#endif /* __FILELOGGER_H__ */


使用方法

注意这些宏不能用于可变的参数列表,只能是指明数目情况下才能使用:

// Log a single line of text without arguments
__LOGSTR_TOFILE("Init complete.")
 
// Log a single integer value
__LOGSTR_TOFILE1("Magic number: %d", intValue)
 
// Log a string (descriptor) + integer value
__LOGSTR_TOFILE2("Message: \"%S\", self-destructs in %d sec", &msgDes, timeleft)

如果需要的话可以根据上述形式记录更多的变量参数。

This page was last modified on 6 August 2012, at 09:56.
56 page views in the last 30 days.