📄 log.c
字号:
#include <stdio.h>
#include <time.h>
#include <stdarg.h>
#include <string.h>
#include "log.h"
static FILE *fp = NULL;
int writeloghdr();
int writelogend();
int initlog(const char *logpath)
{
int result;
time_t t;
char ypath[0x100];
char ympath[0x100];
char file[0x100];
struct tm *ptm = NULL;
if(time(&t) == -1)
{
return -1;
}
ptm = gmtime(&t);
if(!ptm)
{
return -1;
}
ptm->tm_mon += 1;
if(logpath[strlen(logpath)-1] == '/')
{
sprintf(ypath, "%s%04d", logpath, ptm->tm_year+1900);
sprintf(ympath, "%s%04d/%02d", logpath, ptm->tm_year+1900, ptm->tm_mon);
sprintf(file, "%s%04d/%02d%04d-%02d-%02d.log", logpath,
ptm->tm_year+1900, ptm->tm_mon,
ptm->tm_year+1900, ptm->tm_mon, ptm->tm_mday);
}
else
{
sprintf(ypath, "%s/%04d", logpath, ptm->tm_year+1900);
sprintf(ympath, "%s/%04d/%02d", logpath, ptm->tm_year+1900, ptm->tm_mon);
sprintf(file, "%s/%04d/%02d/%04d-%02d-%02d.log", logpath,
ptm->tm_year+1900, ptm->tm_mon,
ptm->tm_year+1900, ptm->tm_mon, ptm->tm_mday);
}
/* create year-month dir */
result = chdir(ympath);
if(result == -1)
{
result = chdir(ypath);
if(result == -1)
{
result = mkdir(ypath);
if(result == -1)
{
return -1;
}
result = mkdir(ympath);
if(result == -1)
{
return -1;
}
}
else
{
result = mkdir(ympath);
if(result == -1)
{
return -1;
}
}
}
fp = fopen(file, "a+");
if(!fp)
{
return -1;
}
writeloghdr();
return 0;
}
int writelog(const char *fmt, ...)
{
va_list args;
char tmps[0x400];
struct tm *ptm = NULL;
time_t t;
if(time(&t) == -1)
{
return -1;
}
ptm = gmtime(&t);
if(!ptm)
{
return -1;
}
ptm->tm_mon += 1;
sprintf(tmps, "%04d-%02d-%02d %02d:%02d:%02d\t", ptm->tm_year+1900,
ptm->tm_mon, ptm->tm_mday, ptm->tm_hour,
ptm->tm_min, ptm->tm_sec);
/* format string */
va_start(args, fmt);
if(fp)
vsprintf((char*)(tmps+strlen(tmps)), fmt, args);
va_end(args);
fprintf(fp, "%s", tmps);
fflush(fp);
return 0;
}
int savelog()
{
if(fp)
fflush(fp);
return 0;
}
int closelog()
{
writelogend();
fclose(fp);
fp = NULL;
return 0;
}
int writeloghdr()
{
writelog("\n\n------------------------start-------------------------\n\n");
return 0;
}
int writelogend()
{
writelog("\n\n-------------------------end--------------------------\n\n");
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -