一个简单的日志方法


FILE *g_fileLog = NULL;
void LogInit()
{
    CString sLogPath = GetModulePath();
    sLogPath += L"\\log.txt";

    // 事实证明,这里一写要有t,ccs=UTF-8才能正确写出wchar_t
    g_fileLog = _tfopen(sLogPath, L"at,ccs=UTF-8"); 
}

bool WriteLog(LPCTSTR format, ...)
{
    time_t tm = time(0);

    TCHAR outBuf[1024] = {0};
    int res = _tcsftime(outBuf, 128, _T("[20%y年%m月%d日 %H:%M:%S] "), localtime(&tm));

    TCHAR lpszInfoBuf[1024] = {0};
    va_list args;
    va_start (args, format);
    _vstprintf_s(lpszInfoBuf, 1024, format, args);
    va_end (args);
    
    _tcscat(outBuf, lpszInfoBuf);
    _tcscat(outBuf, _T("\r\n"));
    fwrite(outBuf, sizeof(TCHAR), _tcslen(outBuf), g_fileLog);

    fflush(g_fileLog);
    return true;
}

void LogClose()
{
    fclose(g_fileLog);
}

这是的GetModulePath 是一个自己写的函数,就是获取当前程序的目录。

使用的时候先调用LogInit(); 程序关闭的时候调用LogClose();

使用示例:

WriteLog(L"打开了%d文件", 10);