本文共 4492 字,大约阅读时间需要 14 分钟。
logFile.h
--------------------------------------------
#ifndef _LOG_FILE_H_
#define _LOG_FILE_H_ #include "define.h" void what_datetime(int *daytime); void what_datetime_str(const char *fmt, char *datetime_str); int log_printf(const char *format, ... ); char g_log_file_name[255]; #endif/*!_LOG_FILE_H_*/---------------------------------------------------------------------
logFile.c
#include <stdlib.h>
#include <stdio.h> #include <stdarg.h> #include <string.h> #include <time.h> #include "LogFile.h" /******************************************************************************** 取系统时间 ********************************************************************************/ void what_datetime(int *daytime) { int year, month, day, hour, min, sec; time_t now; struct tm *today; time(&now); today=localtime(&now); daytime[0] = year = today->tm_year+1900; daytime[1] = month = today->tm_mon+1; daytime[2] = day = today->tm_mday; daytime[3] = hour = today->tm_hour; daytime[4] = min = today->tm_min; daytime[5] = sec = today->tm_sec; } /*** 取昨天日期+当前系统时间 Author: peidw Date : 2010-10-09 **/ void what_yesterday_datetime(int *daytime) { int year, month, day, hour, min, sec; time_t yesterday_t; struct tm *yesterday; yesterday_t = time(NULL) - 24 *60*60; yesterday = localtime(&yesterday_t); daytime[0] = year = yesterday->tm_year+1900; daytime[1] = month = yesterday->tm_mon+1; daytime[2] = day = yesterday->tm_mday; daytime[3] = hour = yesterday->tm_hour; daytime[4] = min = yesterday->tm_min; daytime[5] = sec = yesterday->tm_sec; } /***************************************************************** 按fmt格式返回昨天的日期+当前系统时间 Author : peidw Date : 2010-10-09 fmt:"mm/dd/yyyy" "yyyy/mm/dd" "yyyymmdd" *****************************************************************/ void what_yesterday_datetime_str(const char *fmt, char *datetime_str) { char buf[60]; int datetime[6]; what_yesterday_datetime(datetime); if (!strcmp(fmt, "mm/dd/yyyy") || !strcmp(fmt, "MM/DD/YYYY")) sprintf(buf, "%02d/%02d/%04d", datetime[1], datetime[2], datetime[0]); else if (!strcmp(fmt, "yyyymmdd") || !strcmp(fmt, "YYYYMMDD")) sprintf(buf, "%04d%02d%02d", datetime[0], datetime[1], datetime[2]); else if (!strcmp(fmt, "yyyy/mm/dd") || !strcmp(fmt, "YYYY/MM/DD")) sprintf(buf, "%04d/%02d/%02d", datetime[0], datetime[1], datetime[2]); else if (!strcmp(fmt, "yyyy/mm/dd hh:mm:ss") || !strcmp(fmt, "YYYY/MM/DD HH:MM:SS")) sprintf(buf, "%04d/%02d/%02d %02d:%02d:%02d", datetime[0], datetime[1], datetime[2], datetime[3], datetime[4], datetime[5]); else if (!strcmp(fmt, "hh:mm:ss") || !strcmp(fmt, "HH:MM:SS")) sprintf(buf, "%02d:%02d:%02d", datetime[3], datetime[4], datetime[5]); strcpy(datetime_str, buf); } /***************************************************************** fmt:"mm/dd/yyyy" "yyyy/mm/dd" "yyyymmdd" *****************************************************************/ void what_datetime_str(const char *fmt, char *datetime_str) { char buf[60]; int datetime[6]; what_datetime(datetime); if (!strcmp(fmt, "mm/dd/yyyy") || !strcmp(fmt, "MM/DD/YYYY")) sprintf(buf, "%02d/%02d/%04d", datetime[1], datetime[2], datetime[0]); else if (!strcmp(fmt, "yyyymmdd") || !strcmp(fmt, "YYYYMMDD")) sprintf(buf, "%04d%02d%02d", datetime[0], datetime[1], datetime[2]); else if (!strcmp(fmt, "yyyy/mm/dd") || !strcmp(fmt, "YYYY/MM/DD")) sprintf(buf, "%04d/%02d/%02d", datetime[0], datetime[1], datetime[2]); else if (!strcmp(fmt, "yyyy/mm/dd hh:mm:ss") || !strcmp(fmt, "YYYY/MM/DD HH:MM:SS")) sprintf(buf, "%04d/%02d/%02d %02d:%02d:%02d", datetime[0], datetime[1], datetime[2], datetime[3], datetime[4], datetime[5]); else if (!strcmp(fmt, "hh:mm:ss") || !strcmp(fmt, "HH:MM:SS")) sprintf(buf, "%02d:%02d:%02d", datetime[3], datetime[4], datetime[5]); strcpy(datetime_str, buf); } /**************************************************************************** int logprintf(const char *format, ... ) 用途:往logfile文件中写日志 ****************************************************************************/ int log_printf(const char *format, ... ) { va_list ap; FILE *fp; char buf[4096]; int ret; char time[256]; char tday[256]; char t_file_name[256]; what_datetime_str("yyyymmdd", tday); sprintf(t_file_name,"%s%s_%s","logs/",g_log_file_name,tday);//2010-09-17 裴德万加上logs子目录 fp=fopen(t_file_name, "a"); if (fp == NULL) return -1; va_start(ap ,format); vsprintf(buf, format, ap); va_end(ap); what_datetime_str("yyyy/mm/dd hh:mm:ss", time); ret = fprintf(fp, "[%s] %s", time, buf); fprintf(stdout, "[%s] %s", time, buf); fclose(fp); return ret; }转载地址:http://amvwn.baihongyu.com/