织梦CMS - 轻松建站从此开始!

罗索实验室

当前位置: 主页 > 嵌入式开发 > Symbian OS >

symbian开发错误追踪----log日志

罗索客 发布于 2009-11-02 10:32 点击:次 
symbian里用OpenC来开发时用于错误追踪的一个log日志类。
TAG:

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;
}

(秩名)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www1.rosoo.net/a/200911/7595.html]
本文出处:网络博客 作者:秩名
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容