zoukankan      html  css  js  c++  java
  • 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("
    ");
    		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;
    };
    
    
  • 相关阅读:
    Android项目实战(四):ViewPager切换动画(3.0版本以上有效果)
    安卓开发_浅谈ListView(SimpleAdapter数组适配器)
    ADB server didn't ACK 解决方法
    安卓开发_浅谈自定义组件
    Go语言基础之指针
    Go语言基础之接口
    Go语言标准库之fmt
    Go语言基础之函数
    LeetCode go
    Go语言基础之变量和常量
  • 原文地址:https://www.cnblogs.com/yongchao/p/13276336.html
Copyright © 2011-2022 走看看