资源简介

由于项目经常调试,会经常累积大量日志,因此需要写一个定时删除的功能,代码中精确到秒,路径可以自己输入,也可以默认为当前路径(Glog文件,需自己创建一个空文件),代码中包含写日志,因此可以自己测试,由于写得急促,多处需要优化。由于代码使用线程写的,因此可以很方便地移植到其他项目中。

资源截图

代码片段和文件信息

#include “Glog.h“
#include “delglog.h“
using namespace std;

unsigned int __stdcall DelglogRun(void *arg)
{
string s=Delglog::GetInstance()->GetPath();
//string s=“C:\\ScraperThreeD\\Glog“;
char* c; 
    const int len = s.length(); 
    c = new char[len+1]; 
    strcpy(cs.c_str());
Delglog::GetInstance()->DelglogRealize(c);
return 0;
}

Delglog *Delglog::m_pDelglog = new Delglog();

void Delglog::DelglogStart()
{
HANDLE hThread;
hThread = (HANDLE)_beginthreadex(NULL 0 DelglogRun NULL 0 NULL);
}


string Delglog::GetPath()
{

char szExePath[MAX_PATH] = {0};  
GetModuleFileNameA(NULLszExePathMAX_PATH); 
string strExsPath = szExePath;

int pos1 = strExsPath.find_last_of(‘\\‘);
string strAppName(strExsPath.substr(pos1 + 1) );
string a = strExsPath.substr(0pos1);
int pos2 = a.find_last_of(‘\\‘);
string b = a.substr(0pos2);
int pos3 = strAppName.find_last_of(‘.‘);
strAppName = strAppName.substr(0pos3);

string strLogPath = b +“\\Glog“;
return strLogPath;
}

//获取文件创建时间,若从其它路径移过来的文件以这个文件移过来的时间为准
string Delglog::FileTime(PFILETIME pfile)
{
    FILETIME fileTime;
    SYSTEMTIME st;
    FileTimeToLocalFileTime(pfile&fileTime);
    FileTimeToSystemTime(&fileTime &st);
string time;
string sysmsdshsmisse;//年月日,时分秒
stringstream ssyssmssdsshssmissse;
ssy< ssy>>sy;

ssm< ssm>>sm;
if(atoi(sm.c_str())<10)
sm=“0“+sm;

ssd< ssd>>sd;
if(atoi(sd.c_str())<10)
sd=“0“+sd;

ssh< ssh>>sh;
if(atoi(sh.c_str())<10)
sh=“0“+sh;

ssmi< ssmi>>smi;
if(atoi(smi.c_str())<10)
smi=“0“+smi;

ssse< ssse>>sse;
if(atoi(sse.c_str())<10)
sse=“0“+sse;

time=sy+sm+sd+sh+smi+sse;
LOG(INFO)<<“ftime:    “< return time;
    //cout<}
//函数功能: 扫描查找文件
//参数说明:
//szPath:需要扫描的目录
void Delglog::DelglogRealize(char *szPath)
{
    WIN32_FIND_DATAA FindFileData;


    char szFileToFind[MAX_PATH] = {0};
    lstrcpyA(szFileToFind szPath);
    lstrcatA(szFileToFind “\\*.*“);
    //cout<    //printf(“\n“);


    //查找目录下所有文件
    HANDLE hFile = FindFirstFileA(szFileToFind&FindFileData);
    if (hFile == INVALID_HANDLE_VALUE)return;
    do
    {
        char szNewPath[MAX_PATH] = {0};
        lstrcpyA(szNewPath szPath);
        if(szPath==“*.“)
        {
            LOG(INFO)<            //printf(“\n“);
        }


        //判断是否是目录
        if (FindFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
        {
            //判断是否是.或..(没有下级文件?)
            if (!lstrcmpA(FindFileData.cFileName “.“) || !lstrcmpA(FindFileData.cFileName “..“))
            {

            }
            else
            {
                //递归查找下级目录
                lstrcatA(szNewPath “\\“);
                lstrcatA(szNewPath FindFileData.cFileName);
                Delglog::DelglogRealize(szNewPath);
                

评论

共有 条评论