MFC下调试日志的打印
最近项目出现点小Bug,需要调试跟踪代码,于是乎写了份打印日志的代码。
CLogFile.h文件
#if !defined(AFX_LOGFILE_H__288388CA_9A3E_4F3D_A2B8_F1078E1F6A6B__INCLUDED_)
#define AFX_LOGFILE_H__288388CA_9A3E_4F3D_A2B8_F1078E1F6A6B__INCLUDED_ #if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000 class CLogFile
{
public:
CLogFile();
~CLogFile();
private:
static CString GetFileName();
static CString GetFilePath();
public:
static bool WriteLog(CString LogText);
}; #endif // !defined(AFX_LOGFILE_H__288388CA_9A3E_4F3D_A2B8_F1078E1F6A6B__INCLUDED_)
CLogFile.cpp文件
#include "stdafx.h"
#include "CLogFile.h" CLogFile::CLogFile()
{ } CLogFile::~CLogFile()
{ }
//获取文件名称
CString CLogFile::GetFileName()
{
CString sFileName; sFileName = CTime::GetCurrentTime().Format("%Y-%m-%d") + TEXT(".log"); return sFileName;
} //获取应用程序所在路径
CString CLogFile::GetFilePath()
{
CString m_FilePath; GetModuleFileName(NULL,m_FilePath.GetBufferSetLength(MAX_PATH+),MAX_PATH); m_FilePath.ReleaseBuffer(); int m_iPosIndex; m_iPosIndex = m_FilePath.ReverseFind('\\'); //m_FilePath = m_FilePath.Left(m_iPosIndex) + TEXT("\\Log");
m_FilePath = "D:\\VISTA\\LOGSA"; return m_FilePath;
} bool CLogFile::WriteLog(CString LogText)
{
try
{
//CFile m_File;
CFile m_SFile;
CFileFind m_FileFind;
CString m_sErrorMessage;
CString m_sFileName = GetFileName();
CString m_sFilePath = GetFilePath();
CString m_sCurrentTime = CTime::GetCurrentTime().Format("%Y-%m-%d %X"); if(!m_FileFind.FindFile(m_sFilePath))
{
CreateDirectory(m_sFilePath,NULL);
} m_SFile.Open(m_sFilePath + TEXT("\\") +m_sFileName,CFile::modeCreate |CFile::modeNoTruncate| CFile::modeReadWrite |CFile::shareDenyWrite);
/*{
m_SFile.Open(m_sFilePath + TEXT("\\") + m_sFileName,CFile::modeCreate | CFile::modeReadWrite |CFile::shareDenyWrite| CFile::typeText);
}*/ m_SFile.SeekToEnd(); if(sizeof(TCHAR)==sizeof(WCHAR))
{
WORD wSignature = 0xFEFF;
m_SFile.Write(&wSignature, );
} //TCHAR* m_szMessage; //m_szMessage=m_sErrorMessage.GetBuffer(); m_sErrorMessage = TEXT("*******************") + m_sCurrentTime + TEXT("*******************")+TEXT("\r\n") ;
m_SFile.Write(m_sErrorMessage,m_sErrorMessage.GetLength()*sizeof(TCHAR)); //m_sErrorMessage = LogText ;
LogText+=TEXT("\r\n");
m_SFile.Write(LogText,LogText.GetLength()*sizeof(TCHAR));
//m_sErrorMessage = TEXT("*******************") + m_sCurrentTime + TEXT("*******************") ;
m_SFile.Write(m_sErrorMessage,m_sErrorMessage.GetLength()*sizeof(TCHAR)); //m_SFile.Write(m_sErrorMessage.GetBuffer(),m_sErrorMessage.GetLength()); m_SFile.Close();
}
catch(CFileException fileException)
{
return false;
} return true;
}
以上代码经过调试通过!
MFC下调试日志的打印的更多相关文章
- MFC 下调试 出现 warning : fail to load indicator string 0x0069
MFC 下调试 出现 warning : fail to load indicator string 0x0069 就是程序状态栏每一个标识列中至少有一个值没有初始值 或初始值为空 导致程序没有获取到 ...
- MFC下调试 出现 Warning: initial dialog data is out of range.
在mfc Debug模式下出现"Warning: initial dialog data is out of range."提示..原因是出现在 DDV_MinMaxInt 对应的 ...
- NodeJS学习笔记 进阶 (11)Nodejs 进阶:调试日志打印:debug模块
个人总结:读完这篇文章需要5分钟,讲解了debug模块的使用 摘选自网络 前言 在node程序开发中时,经常需要打印调试日志.用的比较多的是debug模块,比如express框架中就用到了.下文简单举 ...
- windows系统下,express构建的node项目中,如何用debug控制调试日志
debug是一款控制日志输出的库,可以在开发调试环境下打开日志输出,生产环境下关闭日志输出.这样比console.log方便多了,console.log只有注释掉才能不输出. debug库还可以根据d ...
- Tomcat - 怎么控制某个类或者包下的日志打印级别
问题与分析 Tomcat是使用自己的日志实现tomcat-juli.jar来打印日志信息的,日志会被打印到catalina.out里,除去你在项目里自己使用的日志框架外,由System.out,Sys ...
- sqlserver下调试sql语句
现在版本的sqlServer已经支持调试功能了,但是在使用的时候用到的却很少(毕竟print习惯了..) 这里做一个笔记,简单的说明一下在sqlserver下调试的方法: declare @i int ...
- 关于调试日志Log
__VA_ARGS__ 是一个可变参数的宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持).宏前面加上##的作用在于,当可变参数的个数为0时,这里的## ...
- Linux下追踪函数调用,打印栈帧
事情的起因是这样的,之前同事的代码有一个内存池出现了没有回收的情况.也就是是Pop出来的对象没有Push回去,情况很难复现,所以在Pop里的打印日志,跟踪是谁调用了它,我想在GDB调试里可以追踪调用的 ...
- Log4j配置详解及不同的包(package)下的日志写入到不同的日志文件下
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt262 以下都是log4j.properties要写入的内容: 一:参数介绍: ...
随机推荐
- PHP22期基础班技术总结
- C++类与static
到目前为止,我们设计的类中所有的成员变量和成员函数都是属于对象的,如我们在前面定义的book类,利用book类声明两个对象Alice和Harry,这两个对象均拥有各自的price和title成员变量, ...
- VC6.0 通过崩溃地址中找到异常代码行
来源:http://blog.csdn.net/mydeardingxiaoli/article/details/20371585 这是从“VC编程经验总结7”中转出来的借花献佛——如何通过崩溃地址找 ...
- C++实现中缀表达式转前、后缀
#include<iostream> #include<string> #include<stack> using namespace std; bool isIn ...
- 二十七、oracle 例外
一.例外分类oracle将例外分为预定义例外.非预定义例外和自定义例外三种.1).预定义例外用于处理常见的oracle错误.2).非预定义例外用于处理预定义例外不能处理的例外.3).自定义例外用于处理 ...
- php curl 抓取内容
<?php$ch=curl_init(); curl_setopt($ch,CURLOPT_URL,$url)//抓取url curl_setopt($ch,CURLOPT_RETURNTRAN ...
- Win7和Ubuntu下mysql 安装配置
Windows下安装 下载对应版本的mysql安装包安装,如果安装目录为 C:\Program Files\MySQL\MySQL Server 5.6 增加环境变量 MYSQL_HOME=C:\Pr ...
- pdf 电子书分享
http://yunpan.cn/cLgXntGmIas7A 访问密码 7d04 来自为知笔记(Wiz)
- 一个博客总结的css常见的兼容性问题
http://www.cnblogs.com/jikey/p/4233003.html
- 第一百零二节,JavaScript函数
JavaScript函数 学习要点: 1.函数声明 2.return返回值 3.arguments对象 函数是定义一次但却可以调用或执行任意多次的一段JS代码.函数有时会有参数,即函数被调用时指定了值 ...