⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 log.c

📁 GPRS短信收发 基于linux平台
💻 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 + -