WinCE程序C/C++/C#实现带时间标记的日志记录
2010-09-24 11:04
761 查看
WinCE程序C/C++/C#实现带时间标记的日志记录
作者:一点一滴的Beer http://beer.cnblogs.com/
在程序开发时,为了帮助程序员更好的调试和排错,一般都需要日志记录,这是一个程序员应该养成的良好习惯。本文虽然是在WinCE平台下进行的,但是显然更能够在XP平台上运行,甚至只要对一些文件接口函数进行修改,可以在Linux平台下实现相应功能。
用C/C++编写WinCE程序时,写登录日志的方法。测试开发板:EPCS-6960I
一、C语言编写的带时间标记的日志记录方法
二、用C++编写的带时间标记的日志记录方法
三、用C#编写的带时间标记的日志记录方法
------------------------------------------------------------------
Author:一点一滴的Beer
Email /Gtalk:dreamzsm@gmail.com
From:http://www.cnblogs.com/beer
Notes:欢迎转贴,但请在页面中加个链接注明出处
Time:2010-9-24
作者:一点一滴的Beer http://beer.cnblogs.com/
在程序开发时,为了帮助程序员更好的调试和排错,一般都需要日志记录,这是一个程序员应该养成的良好习惯。本文虽然是在WinCE平台下进行的,但是显然更能够在XP平台上运行,甚至只要对一些文件接口函数进行修改,可以在Linux平台下实现相应功能。
用C/C++编写WinCE程序时,写登录日志的方法。测试开发板:EPCS-6960I
一、C语言编写的带时间标记的日志记录方法
#include <stdio.h> #include "string.h" #include "process.h" #include <time.h> #include <direct.h>//创建文件目录 void WriteLogMsg(char chLogMsg[]) { time_t timeval; timeval=time(NULL);//获取本地时间 tm tim=*localtime(&timeval);//得到相应的结构体,然后进行内容提取 char strFilePath[40] = "Log\\";//如果是"\\Log\\"则到了当前盘符的根目录下了。 char strTimeFileName[20];//将当前时间转换成字符串---声明字符串长度的时候,要比实际长度多1,作为结尾符号 strftime(strTimeFileName, sizeof(strTimeFileName), "%Y-%m-%d",&tim);//年月日字符串 strcat(strTimeFileName,".logFile");//加上扩展名--登录日志 strcat(strFilePath,strTimeFileName);//得到完整的路径名 FILE *fp;//文件指针 if ((fp=fopen(strFilePath,"a"))==NULL)//以追加的形式往文件中写东西 { mkdir("Log");//如果在当前目录下没有打开,则重新创建新目录 if ((fp=fopen(strFilePath,"a"))==NULL)//以追加的形式往文件中写东西 { printf("Open Failed\n"); exit(0); } } char chTimeTag[20]; //将时间转成字符串 strftime(chTimeTag, sizeof(chTimeTag), "%Y/%m/%d %X",&tim);//年月日时间字符串--作为登录日志中信息的时间标记头 fputs(chTimeTag,fp);//写入时间标记 fputs(" : ",fp);//分隔符号 fputs(chLogMsg,fp);//写入消息日志 fputs("\n",fp);//换行 int i=fclose(fp); if (i==0) { printf("succeed!\n"); }else { printf("fail!\n"); } } void main() { WriteLogMsg("Hello World!Zsm"); }
二、用C++编写的带时间标记的日志记录方法
void WriteLogMsg(char chLogMsg[]) { char strFilePath[40] = "\\FlashDisk2\\Log\\";//如果是"\\Log\\"则到了当前盘符的根目录下了。 char strTimeFileName[20];//将当前时间转换成字符串---声明字符串长度的时候,要比实际长度多1,作为结尾符号 SYSTEMTIME sysTime; GetLocalTime( &sysTime ); //得到系统时间 sprintf(strTimeFileName,"%d-%d-%d",sysTime.wYear,sysTime.wMonth,sysTime.wDay);//"2010-09-21" strcat(strTimeFileName,".logFile");//加上扩展名--登录日志 strcat(strFilePath,strTimeFileName);//得到完整的路径名 FILE *fp;//文件指针 if ((fp=fopen(strFilePath,"a"))==NULL)//以追加的形式往文件中写东西 { //如果打开不成功,则一般表示没有Log目录 //创建Log目录,然后再重新打开--一般情况下,如果目录存在的话,就不会创建成功的。 if(!CreateDirectory(_T("\\FlashDisk2\\Log"),NULL)) { printf("Create Directory failed!\n"); }else { printf("Create Directory succeed!\n");//cout << "OK" <<endl; if ((fp=fopen(strFilePath,"a"))==NULL)//以追加的形式往文本文件中写东西 { printf("Open Failed\n"); exit(0); } } } char strTimeTag[30];//="2010-09-21"; //将时间转成字符串 sprintf(strTimeTag,"%d-%d-%d %d:%d:%d ",sysTime.wYear,sysTime.wMonth,sysTime.wDay, sysTime.wHour,sysTime.wMinute,sysTime.wSecond);//"2010-09-21" //strftime(chTimeTag, sizeof(chTimeTag), "%Y/%m/%d %X",&tim);//年月日时间字符串--作为登录日志中信息的时间标记头 fputs(strTimeTag,fp);//写入时间标记 fputs(" : ",fp);//分隔符号 fputs(chLogMsg,fp);//写入消息日志 fputs("\n",fp);//换行 int i=fclose(fp); if (i==0) { printf("succeed!\n"); }else { printf("fail!\n"); } }
三、用C#编写的带时间标记的日志记录方法
/// <summary> /// 重要应用:!!!!!写程序故障登录日志记录 /// </summary> /// <param name="strLogMsg"></param> public static void WriteLog(string strLogMsg) { System.IO.FileStream HFile;//先声明一个文件流的句柄,用来存储文件地址 string strFileName = System.DateTime.Today.ToString("yyyyMMdd"); HFile = OpenCreateFile(strFileName);//打开或者创建文件 strLogMsg = System.DateTime.Now.ToString() + " #Msg: " + strLogMsg + "\r\n"; WriteFile(HFile, strLogMsg);//写文件 CloseFile(HFile);//关闭文件 } /// <summary> /// 打开或者创建一个txt文档,这个文档存在于“移动设备”的根目录下面 /// “我的设备”中的所有文件夹,只有“FlashDisk”和“FlashDisk2”文件夹中的内容掉电后不会丢失, /// 所以用户需要保存的文件可以保存在该文件夹中。 /// </summary> /// <param name="strTextFileName">txt文件的名称</param> /// <return>创建的文件的句柄</return> private static System.IO.FileStream OpenCreateFile(string strTextFileName) { System.IO.FileStream HFile; string strLogpath = "\\FlashDisk2\\Log"; if (!Directory.Exists(strLogpath)) Directory.CreateDirectory(strLogpath); string strFilePath = "\\FlashDisk2\\Log\\" + strTextFileName + ".txt";//在移动设备的根目录下面 try { HFile = System.IO.File.Open(strFilePath, System.IO.FileMode.OpenOrCreate); } catch (Exception) { //MessageBox.Show("文件创建或打开失败"); HFile = null; } return HFile; } /// <summary> /// 往文件中写入内容 /// </summary> /// <param name="HFile">文件句柄</param> /// <param name="strWriteText">需要写入的内容</param> private static void WriteFile(System.IO.FileStream HFile, string strWriteText) { if (HFile == null) { // MessageBox.Show("文件未打开"); return; } //strWriteText = "Hello File"; Byte[] buffer; buffer = System.Text.Encoding.GetEncoding(System.Globalization.CultureInfo.CurrentCulture.TextInfo.ANSICodePage).GetBytes(strWriteText); HFile.Position = HFile.Length; HFile.Write(buffer, 0, buffer.Length); } private static void CloseFile(System.IO.FileStream HFile) { if (HFile != null) { HFile.Close(); HFile = null; } }
------------------------------------------------------------------
Author:一点一滴的Beer
Email /Gtalk:dreamzsm@gmail.com
From:http://www.cnblogs.com/beer
Notes:欢迎转贴,但请在页面中加个链接注明出处
Time:2010-9-24
相关文章推荐
- WinCE程序C/C++/C#实现带时间标记的日志记录
- 用c++实现记录程序运行时间的类
- WinCE程序C/C++/C#实现带时间标记的日志记录
- 一个用Spring AOP实现异常处理和记录程序执行时间的实例--邵京国
- C#实现C/C++程序的自动批改
- c++实现 日志记录
- C++高精度实现计算程序运行时间
- C#创建创建文本文件写入读取,可以用来做系统日志或程序操作日志或者错误记录
- 简单的C++加载jvm实现--简单的日志输出--JAVA端程序
- Python实现监控程序执行时间并将其写入日志的方法
- C++高精度实现计算程序运行时间
- C#记录程序运行时间记录显示
- C# 写日志,用于记录程序运行状态
- C# 实现记录每个线程log日志
- C#实现测量程序运行时间及cpu使用时间
- C# 使用Trace记录程序日志
- 用java写的小程序:实现输出万年历,在系统时间的对应那天标记星号输出
- C++实现计算程序运行时间 高精度
- C# 使用TraceSource记录程序日志
- 一个用Spring AOP实现异常处理和记录程序执行时间的实例(一)