file1:WriteMapLog.h #pragma once //写日志 void WriteMapLog( CString str, CString szLogName = L"mapError.log" ); file2: #include "stdafx.h" #include "WriteMapLog.h" //加入头文件使类可以在宽字符环境下写入中文 #include
void WriteMapLog( CString str, CString szLogName ) { CTime time = CTime::GetCurrentTime(); CString s_time; s_time.Format(L"<%d-%d-%d %d:%d:%d>:", time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond() ); str = s_time + str; str = str + L"/n"; //设定区域 char* old_locale = _strdup( setlocale(LC_CTYPE,NULL) ); setlocale( LC_CTYPE, "chs" ); CStdioFile file; CFileFind finder; if ( szLogName == _T("") ) { szLogName.Format(L"%s",L"mapError.log"); } if( finder.FindFile( szLogName ) ) { file.Open( szLogName, CStdioFile::modeReadWrite | CStdioFile::shareExclusive ); file.SeekToEnd(); } else { file.Open( szLogName, CStdioFile::modeReadWrite | CStdioFile::modeCreate ); } file.WriteString( str ); file.Close(); finder.Close(); //还原区域设定 setlocale( LC_CTYPE, old_locale ); free( old_locale ); } 使用: 1将源文件和头文件加入到工程中 2 Cstring szerror; szerror.Format(_T("错误信息")); WriteMapLog( szerror, _T("error.log")); 将“错误信息”打印到error.log中 finished