在项目中输出 日志信息
来源:互联网 发布:拼图软件知乎 编辑:程序博客网 时间:2024/04/28 08:51
情景: 近来工程中需要在Windows 的不同版本中进行测试,但是在一些版本中却出现了 Bug 。 不可能在每个平台下都安装环境进行调试吧,所以输出一个文件日志信息进行查看调试是最合理不过了。。
以下是一个输出日志信息的简单 Demo.. 在实际项目中可以对更多的 trace 函数进行重载更多的版本。
// 输出日志信息的 Demo// 2014-9-30 8:44:53#include "stdafx.h"#include <shlobj.h>//#define Enable_Trace_Log//#ifdef Enable_Trace_Log//// ...//#else//// ...//#endif#ifndef _DEBUG// 如果是非调试的情况下,没必要输出日志信息。 // 或者自己定义一个宏,在需要的时候如上面那几行的写法进行预处理void trace_init(){}void trace(LPCTSTR format,...){}#else#include <sstream>#include <atlstr.h> // for CStringvoid trace_init(){std::wostringstream so;TCHAR szPath[MAX_PATH] = {0};if (!SHGetSpecialFolderPath(NULL, szPath, CSIDL_LOCAL_APPDATA, TRUE)){return;}FILE* fp= NULL;_tcscat(szPath, _T("\\trace.log"));CString filter;fp=_tfopen(szPath, _T("r, ccs=UNICODE"));if(fp==NULL){filter=_T("w, ccs=UNICODE");}else{fclose(fp);fp=NULL;filter=_T("a, ccs=UNICODE");}fp=_tfopen(szPath, filter);//// Split Barfor(int i=1;i<100;i++){so<<L"=";}so<<std::endl;so<<L"Trace Log"<<std::endl;// TimeSYSTEMTIME st;GetLocalTime(&st);CString strTime;strTime.Format(_T("%4d-%02d-%02d, %02d:%02d:%02d.%03d"), st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds );so<<strTime.GetBuffer()<<std::endl;fwrite(so.str().c_str(),sizeof(wchar_t),so.str().length(),fp);fclose(fp);}void trace(LPCTSTR format,...){TCHAR szPath[MAX_PATH] = {0};if (!SHGetSpecialFolderPath(NULL, szPath, CSIDL_LOCAL_APPDATA, TRUE)){return;}FILE* fp = NULL;_tcscat(szPath, _T("\\trace.log"));fp=_tfopen(szPath, _T("a, ccs=UTF-8"));if(fp==NULL){return;}wchar_t buffer[1024];va_list arglist;std::wostringstream so;va_start ( arglist, format );vswprintf ( buffer, 1024, format, arglist );va_end ( arglist );so<<buffer<<std::endl;fwrite(so.str().c_str(),sizeof(wchar_t),so.str().length(),fp);fclose(fp);}#endif // _DEBUGint main(){trace_init(); // 在使用前先调用这一句,在MFC 代码中常添加到 C**App::InitInstance() 中去trace(TEXT("test: %s"), TEXT("BenDan....."));for (int i = 0; i < 10; ++i){trace(TEXT(": %d "), i);}trace(TEXT("End"));return 1;}
0 0
- 在项目中输出 日志信息
- mysql 在存储过程中输出日志信息
- 在mybatis中log4j日志信息不能输出到控制台
- 在WPF中,使用控制台输出日志信息
- ofbiz在groovy中输出日志信息,便于调试。
- NS3中日志信息输出到文件
- 在debugView中输出信息
- 在后台日志中写入信息-输出信息到log
- dubbo项目中使用logback输出日志
- eclipse中maven项目配置日志输出
- log4j 控制台不输出,jar包也有,就是启动项目,应该输出在控制台的日志信息根本就没输出出来!
- 在项目中记录日志
- 输出信息到日志
- Android:输出日志信息
- ldap输出日志信息
- logger4j输出日志信息
- log4net在c#中 不能输出日志
- hadoop 在eclipse中输出日志
- Google Protocol Buffer 的使用和原理
- Struts2 中如何覆盖已内置拦截器的属性(参数)值
- 发布网站发现编码乱问题,修改Tomact7.0配置文件server.xml
- Python学习笔记——序列、列表
- Hadoop(2.5.1)伪分布式环境CentOS(6.5 64位)配置
- 在项目中输出 日志信息
- 赵雅智_Swift(2)_swift常量和变量
- Google's R Style Guide
- ZOJ ——3629 Treasure Hunt IV
- Android完全结束应用程序
- BSS段、数据段、代码段、堆与栈
- IOS用封装的API AsyncSocket进行网络通信
- 今目标,金目标
- 程序 c/c++、Java编写一个统计小程序