Code-Output File-Two Way

Code-Output File-Two Way

July 9, 2020 9:25 PM

1.使用ofstream 输出

#include <fstream>
SYSTEMTIME st;
GetLocalTime(&st);

CString strTime;
strTime.Format(_T(" %d-%02d-%02d %02d:%02d:%02d.%03d"),st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond,st.wMilliseconds);

string strIPAddr="192.168.0.1"
string temp = "D://mess//"+strIPAddr + ".txt";
ofstream outfile(temp.c_str(),std::ios::app|std::ios::out); 
outfile<<strIPAddr<<"-"<<GetCurrentThreadId()<<"-"<<"TryConnect"<<"-"<<"errorNum"<<m_ierrNum<<strTime.GetBuffer()<<endl;
outfile.close();
strTime.ReleaseBuffer();

2.使用Class 输出


class CExportLog
{
public:
	CExportLog()
	{
		InitializeCriticalSection(&m_csLock);

		//获取模块运行路径
		wchar_t wFilePath[_MAX_FNAME] = {0};
		wchar_t wDrive[_MAX_FNAME] = {0};
		wchar_t wDir[_MAX_FNAME] = {0};
		wchar_t wFileName[_MAX_FNAME] = {0};
		wchar_t wExe[_MAX_FNAME] = {0};

		GetModuleFileName(NULL, wFilePath, _MAX_FNAME);
		_tsplitpath(wFilePath,   wDrive,   wDir,   wFileName,   wExe);

		std::wstring strFilePath;
		strFilePath.append(wDrive);
		strFilePath.append(wDir);
		strFilePath.append(L"Log\\log.log");
		m_strFilePath = strFilePath.c_str();
	}

	virtual ~CExportLog()
	{
		DeleteCriticalSection(&m_csLock);
	}

	void ExportMsg(CString strMsg)
	{
		CStdioFile LogFile;
		setlocale( LC_CTYPE, "chs" );
		EnterCriticalSection(&m_csLock);
		if (LogFile.Open(m_strFilePath, CFile::modeCreate|CFile::modeReadWrite|CFile::typeText|CFile::modeNoTruncate))
		{
			LogFile.SeekToEnd();

			SYSTEMTIME st;
			GetLocalTime(&st);
		CString strText, strBackupTime;
	strBackupTime.Format(_T("%04d%02d%02d%02d%02d%02d%03d"), st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds);
		strText.Format(_T("%04d-%02d-%02d %02d:%02d:%02d.%03d  "), st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds);
		
		strText += strMsg;
		strText += _T("\n");
		LogFile.WriteString(strText);

		ULONGLONG dFileSize = LogFile.GetLength();
		if (dFileSize > 20*1024*1024)
		{
			LogFile.Close();
			CString strNewFile;
			strNewFile = m_strFilePath;
			strBackupTime += _T(".log");
			strNewFile.Replace(_T(".log"), strBackupTime.GetString());
			CopyFile(m_strFilePath.GetString(), strNewFile.GetString(), FALSE);
			DeleteFile(m_strFilePath.GetString());
			}
			else
			{
				LogFile.Close();
			}
		}
		LeaveCriticalSection(&m_csLock);
	}

private:
	CRITICAL_SECTION  m_csLock;
	CString m_strFilePath;
};

上一篇:HDU 2612 Find a way


下一篇:Android 开发技术周报 Issue#272