symbian开发错误追踪----log日志
//头文件
#ifndef __RLOG_H__
#define __RLOG_H__
#include <e32base.h>
class RLog : public CBase
{
public:
/**
* 用于写信息到错误日志文件中。
* @param const TDesC & aErrTypeName,错误信息的名称。
* @param const TDesC & aErrMsg,要写的信息。
* @Return void,无返回值。
**/
static void Log(const TDesC &aErrTypeName, const TDesC &aErrMsg);
/**
*用于写信息到错误日志文件中。
* @param const TDesC & aErrMsg,要写的信息。
* @param const TInt aErrCode,用于写错误日志时的错误代码。
* @Return void,无返回值。
**/
static void Log(const TDesC &aErrMsg, const TInt aErrCode);
/**
* 用于写信息到错误日志文件中。
* @param const TDesC & aMsg,要写的信息。
* @Return void,无返回值。
**/
static void Log(const TDesC &aMsg);
private:
/**
* 静态方法,用于构造对象
* @Return RLog *,返回一个RLog对象本身
**/
static RLog *NewL();
/**
* 静态方法,用于构造对象
* @Return RLog *,返回一个RLog对象本身
**/
static RLog *NewLC();
/**
* 默认的析构函数,
* @Return ,无返回值,
**/
~RLog();
private:
/**
* 默认的构造函数
* @Return ,返回对象本身。
**/
RLog();
};
#endif // __RLOG_H__
///c++实现类
#include "RLog.h"
#include <flogger.h>
/**
* 静态方法,用于构造对象
* @Return RLog *,返回一个RLog对象本身
**/
RLog * RLog::NewL()
{
RLog *self = NewLC();
CleanupStack::Pop(self);
return self;
}
/**
* 静态方法,用于构造对象
* @Return RLog *,返回一个RLog对象本身
**/
RLog * RLog::NewLC()
{
RLog *self = new (ELeave) RLog();
CleanupStack::PushL(self);
return self;
}
/**
* 默认的构造函数
* @Return ,返回对象本身。
**/
RLog::RLog()
{
}
/**
* 默认的析构函数,
* @Return ,无返回值,
**/
RLog::~RLog()
{
}
/**
* 用于写信息到错误日志文件中。
* @param const TDesC & aMsg,要写的信息。
* @Return void,无返回值。
**/
void RLog::Log(const TDesC &aMsg)
{
RFileLogger iLog;
iLog.Connect();
iLog.CreateLog(_L("mylog"), _L("mylog.log"), EFileLoggingModeAppend);
iLog.Write(aMsg);
// Close the log file and the connection to the server.
iLog.CloseLog();
iLog.Close();
}
/**
*用于写信息到错误日志文件中。
* @param const TDesC & aErrMsg,要写的信息。
* @param const TInt aErrCode,用于写错误日志时的错误代码。
* @Return void,无返回值。
**/
void RLog::Log(const TDesC &aErrMsg, const TInt aErrCode)
{
HBufC *buf = HBufC::New(aErrMsg.Length() + 20);
buf->Des().Append(aErrMsg);
buf->Des().Append(_L(":"));
buf->Des().AppendNum(aErrCode);
Log(*buf);
delete buf;
}
/**
* 用于写信息到错误日志文件中。
* @param const TDesC & aErrTypeName,错误信息的名称。
* @param const TDesC & aErrMsg,要写的信息。
* @Return void,无返回值。
**/
void RLog::Log(const TDesC &aErrTypeName, const TDesC &aErrMsg)
{
HBufC *buf = HBufC::New(aErrTypeName.Length() + 2 + aErrMsg.Length());
buf->Des().Append(aErrTypeName);
buf->Des().Append(_L(":"));
buf->Des().Append(aErrMsg);
Log(*buf);
delete buf;
}
///添加类库支持flogger.lib
调用实例:
模拟器上使用log, 在目录\epoc32\wins\c\logs下创建目录mylog,并在下面创建文件mylog.log
在手机上使用log, 在pkg文件的同级目录创建文件 mylog.log
需要在pkg文件中加入".mylog.log"-"c:\logs\mylog\mylog.log"-目的是创建一个文件夹.
void ****::FileLog(char* content)
{
HBufC* h = HBufC::NewL(1024);
h->Des().Append(_L("i am here!"));
RLog::Log(h->Des());
delete h;
h = NULL;
}
(秩名) |