S60中日志文件写入函数
一个在S60中日志文件写入的函数,适合记载程序在运行中的行为。
函数如下:
#define __DEBUG__
#ifdef __DEBUG__
_LIT(KLogFileName, "c:\\data\\log.txt"); // 日志文件存放位置
void CTestRmsDbGuiAppUi::LogInfo(const TDesC& aBuf)
{
RFs fs;
User::LeaveIfError(fs.Connect());
RFile file;
TUint attr;
TInt error = KErrNone;
if (fs.Att(KLogFileName, attr)!=KErrNone)
{
error = file.Create(fs, KLogFileName, EFileWrite|EFileShareAny);
}
if (error == KErrNone)
{
TInt pos= 0;
error = file.Open(fs, KLogFileName, EFileWrite|EFileShareAny);
if (error == KErrNone)
{
error = file.Seek(ESeekEnd, pos);
if (error == KErrNone)
{
TBuf8<256> buf;
TPtrC ptr(aBuf);
CnvUtfConverter::ConvertFromUnicodeToUtf8(buf, ptr);
file.Write(buf);
_LIT8(KEol, "\r\n");
file.Write(KEol);
file.Close();
}
}
}
fs.Close();
}
#ifdef __DEBUG__
_LIT(KLogFileName, "c:\\data\\log.txt"); // 日志文件存放位置
void CTestRmsDbGuiAppUi::LogInfo(const TDesC& aBuf)
{
RFs fs;
User::LeaveIfError(fs.Connect());
RFile file;
TUint attr;
TInt error = KErrNone;
if (fs.Att(KLogFileName, attr)!=KErrNone)
{
error = file.Create(fs, KLogFileName, EFileWrite|EFileShareAny);
}
if (error == KErrNone)
{
TInt pos= 0;
error = file.Open(fs, KLogFileName, EFileWrite|EFileShareAny);
if (error == KErrNone)
{
error = file.Seek(ESeekEnd, pos);
if (error == KErrNone)
{
TBuf8<256> buf;
TPtrC ptr(aBuf);
CnvUtfConverter::ConvertFromUnicodeToUtf8(buf, ptr);
file.Write(buf);
_LIT8(KEol, "\r\n");
file.Write(KEol);
file.Close();
}
}
}
fs.Close();
}
#endif
注意要引入f32file.h、UTF.h、APGCLI.H,在S60 3rd中必须拥有ReadUserData WriteUserData这两个能力。
使用方法:
#ifdef __DEBUG__
LogInfo(_L("--Test Log--"));
#endif
LogInfo(_L("--Test Log--"));
#endif