文件日志自动删除备份
2018-01-08 15:55
369 查看
//log打印日志,可以保存到文件中,当日志文件大于5M,自动备份到DebugLog2.log中,DebugLog1.log继续存放最新的日志,这样就保证5M以上的最新日志
#include <netinet/in.h> // for sockaddr_in
#include <sys/types.h> // for socket
#include <sys/socket.h> // for socket
#include <stdio.h> // for printf
#include <stdlib.h> // for exit
#include <string.h> // for bzero
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <string.h>
#include <time.h>
#include <sys/time.h>
//==================================================================
// debug with time and show type with stdout or file
// if DebugLog1.log > 5M ,copy to DebugLog2.log save
//===================================================================
#define MAXLOGSIZE 5000000
#define MAXLINSIZE 16000
char logfilename1[]="DebugLog1.log";
char logfilename2[]="DebugLog2.log";
#define DEBUG_FILE 1
time_t timep;
struct tm *tmp;
typedef enum G_LOG_LEVEL
{
LOG_LEVEL_DEBUG = 0,
LOG_LEVEL_INFO,
LOG_LEVEL_WARN,
LOG_LEVEL_ERROR,
LOG_LEVEL_FATAL,
LOG_LEVEL_NONE,
}d_log_level_t;
d_log_level_t g_LogLevel;
void d_common_log_set_level(d_log_level_t LogLevel);
#define D_LOG_DEBUG(...) \
{\
if(g_LogLevel <= LOG_LEVEL_DEBUG)\
{\
{ \
time(&timep); \
tmp=localtime(&timep); \
fprintf(stdout,"[%4d-%02d-%02d %02d:%02d:%02d] ", \
(1900+tmp->tm_year), \
(1+tmp->tm_mon), \
tmp->tm_mday, \
tmp->tm_hour, \
tmp->tm_min, \
tmp->tm_sec); \
fprintf(stdout,"[DEBUG] %s:%s:%d:\t", __FILE__, __FUNCTION__, __LINE__); \
fprintf(stdout,__VA_ARGS__); \
fflush(stdout); \
}\
if (DEBUG_FILE == 1 ) \
{ \
FILE *fp = fopen(logfilename1,"a"); \
time(&timep); \
tmp=localtime(&timep); \
fprintf(fp,"[%4d-%02d-%02d %02d:%02d:%02d] ", \
(1900+tmp->tm_year), \
(1+tmp->tm_mon), \
tmp->tm_mday, \
tmp->tm_hour, \
tmp->tm_min, \
tmp->tm_sec); \
fprintf(fp,"[DEBUG] %s:%s:%d:\t", __FILE__, __FUNCTION__, __LINE__); \
fprintf(fp,__VA_ARGS__); \
if (ftell(fp)>MAXLOGSIZE) {\
fclose(fp);\
rename(logfilename1,logfilename2);\
}\
else \
fclose(fp); \
}\
}\
}
#define D_LOG_INFO(...) \
{\
if(g_LogLevel <= LOG_LEVEL_INFO)\
{\
{ \
time(&timep); \
tmp=localtime(&timep); \
fprintf(stdout,"[%4d-%02d-%02d %02d:%02d:%02d] ", \
(1900+tmp->tm_year), \
(1+tmp->tm_mon), \
tmp->tm_mday, \
tmp->tm_hour, \
tmp->tm_min, \
tmp->tm_sec); \
fprintf(stdout,"[INFO] %s:%s:%d:\t", __FILE__, __FUNCTION__, __LINE__); \
fprintf(stdout,__VA_ARGS__); \
fflush(stdout); \
}\
if (DEBUG_FILE == 1 ) \
{ \
FILE *fp = fopen(logfilename1,"a"); \
time(&timep); \
tmp=localtime(&timep); \
fprintf(fp,"[%4d-%02d-%02d %02d:%02d:%02d] ", \
(1900+tmp->tm_year), \
(1+tmp->tm_mon), \
tmp->tm_mday, \
tmp->tm_hour, \
tmp->tm_min, \
tmp->tm_sec); \
fprintf(fp,"[INFO] %s:%s:%d:\t", __FILE__, __FUNCTION__, __LINE__); \
fprintf(fp,__VA_ARGS__); \
if (ftell(fp)>MAXLOGSIZE) {\
fclose(fp);\
rename(logfilename1,logfilename2);\
}\
else \
fclose(fp); \
}\
}\
}
#define D_LOG_WARN(...) \
{\
if(g_LogLevel <= LOG_LEVEL_WARN)\
{\
{ \
time(&timep); \
tmp=localtime(&timep); \
fprintf(stdout,"[%4d-%02d-%02d %02d:%02d:%02d] ", \
(1900+tmp->tm_year), \
(1+tmp->tm_mon), \
tmp->tm_mday, \
tmp->tm_hour, \
tmp->tm_min, \
tmp->tm_sec); \
fprintf(stdout,"[WARN] %s:%s:%d:\t", __FILE__, __FUNCTION__, __LINE__); \
fprintf(stdout,__VA_ARGS__); \
fflush(stdout); \
}\
if (DEBUG_FILE == 1 ) \
{ \
FILE *fp = fopen(logfilename1,"a"); \
time(&timep); \
tmp=localtime(&timep); \
fprintf(fp,"[%4d-%02d-%02d %02d:%02d:%02d] ", \
(1900+tmp->tm_year), \
(1+tmp->tm_mon), \
tmp->tm_mday, \
tmp->tm_hour, \
tmp->tm_min, \
tmp->tm_sec); \
fprintf(fp,"[WARN] %s:%s:%d:\t", __FILE__, __FUNCTION__, __LINE__); \
fprintf(fp,__VA_ARGS__); \
if (ftell(fp)>MAXLOGSIZE) {\
fclose(fp);\
rename(logfilename1,logfilename2);\
}\
else \
fclose(fp); \
}\
}\
}
#define D_LOG_ERROR(...) \
{\
if(g_LogLevel <= LOG_LEVEL_ERROR)\
{\
{ \
time(&timep); \
tmp=localtime(&timep); \
fprintf(stdout,"[%4d-%02d-%02d %02d:%02d:%02d] ", \
(1900+tmp->tm_year), \
(1+tmp->tm_mon), \
tmp->tm_mday, \
tmp->tm_hour, \
tmp->tm_min, \
tmp->tm_sec); \
fprintf(stdout,"[ERROR] %s:%s:%d:\t", __FILE__, __FUNCTION__, __LINE__); \
fprintf(stdout,__VA_ARGS__); \
fflush(stdout); \
}\
if (DEBUG_FILE == 1 ) \
{ \
FILE *fp = fopen(logfilename1,"a"); \
time(&timep); \
tmp=localtime(&timep); \
fprintf(fp,"[%4d-%02d-%02d %02d:%02d:%02d] ", \
(1900+tmp->tm_year), \
(1+tmp->tm_mon), \
tmp->tm_mday, \
tmp->tm_hour, \
tmp->tm_min, \
tmp->tm_sec); \
fprintf(fp,"[ERROR] %s:%s:%d:\t", __FILE__, __FUNCTION__, __LINE__); \
fprintf(fp,__VA_ARGS__); \
if (ftell(fp)>MAXLOGSIZE) {\
fclose(fp);\
rename(logfilename1,logfilename2);\
}\
else \
fclose(fp); \
}\
}\
}
#define D_LOG_FATAL(...) \
{\
if(g_LogLevel <= LOG_LEVEL_FATAL)\
{\
{ \
time(&timep); \
tmp=localtime(&timep); \
fprintf(stdout,"[%4d-%02d-%02d %02d:%02d:%02d] ", \
(1900+tmp->tm_year), \
(1+tmp->tm_mon), \
tmp->tm_mday, \
tmp->tm_hour, \
tmp->tm_min, \
tmp->tm_sec); \
fprintf(stdout,"[NOTICE] %s:%s:%d:\t", __FILE__, __FUNCTION__, __LINE__); \
fprintf(stdout,__VA_ARGS__); \
fflush(stdout); \
}\
if (DEBUG_FILE == 1 ) \
{ \
FILE *fp = fopen(logfilename1,"a"); \
time(&timep); \
tmp=localtime(&timep); \
fprintf(fp,"[%4d-%02d-%02d %02d:%02d:%02d] ", \
(1900+tmp->tm_year), \
(1+tmp->tm_mon), \
tmp->tm_mday, \
tmp->tm_hour, \
tmp->tm_min, \
tmp->tm_sec); \
fprintf(fp,"[NOTICE] %s:%s:%d:\t", __FILE__, __FUNCTION__, __LINE__); \
fprintf(fp,__VA_ARGS__); \
if (ftell(fp)>MAXLOGSIZE) {\
fclose(fp);\
rename(logfilename1,logfilename2);\
}\
else \
fclose(fp); \
}\
}\
}
void d_common_log_set_level(d_log_level_t LogLevel)
{
g_LogLevel = LogLevel;
}
int main(int argc,char **argv)
{
d_common_log_set_level(LOG_LEVEL_DEBUG);
int i;
for (i=0;i<10000;i++) {
D_LOG_DEBUG("This is a Log %04d from FILE:%s LINE:%d\n",i, __FILE__, __LINE__);
sleep(1);
}
return 0;
}
#include <netinet/in.h> // for sockaddr_in
#include <sys/types.h> // for socket
#include <sys/socket.h> // for socket
#include <stdio.h> // for printf
#include <stdlib.h> // for exit
#include <string.h> // for bzero
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <string.h>
#include <time.h>
#include <sys/time.h>
//==================================================================
// debug with time and show type with stdout or file
// if DebugLog1.log > 5M ,copy to DebugLog2.log save
//===================================================================
#define MAXLOGSIZE 5000000
#define MAXLINSIZE 16000
char logfilename1[]="DebugLog1.log";
char logfilename2[]="DebugLog2.log";
#define DEBUG_FILE 1
time_t timep;
struct tm *tmp;
typedef enum G_LOG_LEVEL
{
LOG_LEVEL_DEBUG = 0,
LOG_LEVEL_INFO,
LOG_LEVEL_WARN,
LOG_LEVEL_ERROR,
LOG_LEVEL_FATAL,
LOG_LEVEL_NONE,
}d_log_level_t;
d_log_level_t g_LogLevel;
void d_common_log_set_level(d_log_level_t LogLevel);
#define D_LOG_DEBUG(...) \
{\
if(g_LogLevel <= LOG_LEVEL_DEBUG)\
{\
{ \
time(&timep); \
tmp=localtime(&timep); \
fprintf(stdout,"[%4d-%02d-%02d %02d:%02d:%02d] ", \
(1900+tmp->tm_year), \
(1+tmp->tm_mon), \
tmp->tm_mday, \
tmp->tm_hour, \
tmp->tm_min, \
tmp->tm_sec); \
fprintf(stdout,"[DEBUG] %s:%s:%d:\t", __FILE__, __FUNCTION__, __LINE__); \
fprintf(stdout,__VA_ARGS__); \
fflush(stdout); \
}\
if (DEBUG_FILE == 1 ) \
{ \
FILE *fp = fopen(logfilename1,"a"); \
time(&timep); \
tmp=localtime(&timep); \
fprintf(fp,"[%4d-%02d-%02d %02d:%02d:%02d] ", \
(1900+tmp->tm_year), \
(1+tmp->tm_mon), \
tmp->tm_mday, \
tmp->tm_hour, \
tmp->tm_min, \
tmp->tm_sec); \
fprintf(fp,"[DEBUG] %s:%s:%d:\t", __FILE__, __FUNCTION__, __LINE__); \
fprintf(fp,__VA_ARGS__); \
if (ftell(fp)>MAXLOGSIZE) {\
fclose(fp);\
rename(logfilename1,logfilename2);\
}\
else \
fclose(fp); \
}\
}\
}
#define D_LOG_INFO(...) \
{\
if(g_LogLevel <= LOG_LEVEL_INFO)\
{\
{ \
time(&timep); \
tmp=localtime(&timep); \
fprintf(stdout,"[%4d-%02d-%02d %02d:%02d:%02d] ", \
(1900+tmp->tm_year), \
(1+tmp->tm_mon), \
tmp->tm_mday, \
tmp->tm_hour, \
tmp->tm_min, \
tmp->tm_sec); \
fprintf(stdout,"[INFO] %s:%s:%d:\t", __FILE__, __FUNCTION__, __LINE__); \
fprintf(stdout,__VA_ARGS__); \
fflush(stdout); \
}\
if (DEBUG_FILE == 1 ) \
{ \
FILE *fp = fopen(logfilename1,"a"); \
time(&timep); \
tmp=localtime(&timep); \
fprintf(fp,"[%4d-%02d-%02d %02d:%02d:%02d] ", \
(1900+tmp->tm_year), \
(1+tmp->tm_mon), \
tmp->tm_mday, \
tmp->tm_hour, \
tmp->tm_min, \
tmp->tm_sec); \
fprintf(fp,"[INFO] %s:%s:%d:\t", __FILE__, __FUNCTION__, __LINE__); \
fprintf(fp,__VA_ARGS__); \
if (ftell(fp)>MAXLOGSIZE) {\
fclose(fp);\
rename(logfilename1,logfilename2);\
}\
else \
fclose(fp); \
}\
}\
}
#define D_LOG_WARN(...) \
{\
if(g_LogLevel <= LOG_LEVEL_WARN)\
{\
{ \
time(&timep); \
tmp=localtime(&timep); \
fprintf(stdout,"[%4d-%02d-%02d %02d:%02d:%02d] ", \
(1900+tmp->tm_year), \
(1+tmp->tm_mon), \
tmp->tm_mday, \
tmp->tm_hour, \
tmp->tm_min, \
tmp->tm_sec); \
fprintf(stdout,"[WARN] %s:%s:%d:\t", __FILE__, __FUNCTION__, __LINE__); \
fprintf(stdout,__VA_ARGS__); \
fflush(stdout); \
}\
if (DEBUG_FILE == 1 ) \
{ \
FILE *fp = fopen(logfilename1,"a"); \
time(&timep); \
tmp=localtime(&timep); \
fprintf(fp,"[%4d-%02d-%02d %02d:%02d:%02d] ", \
(1900+tmp->tm_year), \
(1+tmp->tm_mon), \
tmp->tm_mday, \
tmp->tm_hour, \
tmp->tm_min, \
tmp->tm_sec); \
fprintf(fp,"[WARN] %s:%s:%d:\t", __FILE__, __FUNCTION__, __LINE__); \
fprintf(fp,__VA_ARGS__); \
if (ftell(fp)>MAXLOGSIZE) {\
fclose(fp);\
rename(logfilename1,logfilename2);\
}\
else \
fclose(fp); \
}\
}\
}
#define D_LOG_ERROR(...) \
{\
if(g_LogLevel <= LOG_LEVEL_ERROR)\
{\
{ \
time(&timep); \
tmp=localtime(&timep); \
fprintf(stdout,"[%4d-%02d-%02d %02d:%02d:%02d] ", \
(1900+tmp->tm_year), \
(1+tmp->tm_mon), \
tmp->tm_mday, \
tmp->tm_hour, \
tmp->tm_min, \
tmp->tm_sec); \
fprintf(stdout,"[ERROR] %s:%s:%d:\t", __FILE__, __FUNCTION__, __LINE__); \
fprintf(stdout,__VA_ARGS__); \
fflush(stdout); \
}\
if (DEBUG_FILE == 1 ) \
{ \
FILE *fp = fopen(logfilename1,"a"); \
time(&timep); \
tmp=localtime(&timep); \
fprintf(fp,"[%4d-%02d-%02d %02d:%02d:%02d] ", \
(1900+tmp->tm_year), \
(1+tmp->tm_mon), \
tmp->tm_mday, \
tmp->tm_hour, \
tmp->tm_min, \
tmp->tm_sec); \
fprintf(fp,"[ERROR] %s:%s:%d:\t", __FILE__, __FUNCTION__, __LINE__); \
fprintf(fp,__VA_ARGS__); \
if (ftell(fp)>MAXLOGSIZE) {\
fclose(fp);\
rename(logfilename1,logfilename2);\
}\
else \
fclose(fp); \
}\
}\
}
#define D_LOG_FATAL(...) \
{\
if(g_LogLevel <= LOG_LEVEL_FATAL)\
{\
{ \
time(&timep); \
tmp=localtime(&timep); \
fprintf(stdout,"[%4d-%02d-%02d %02d:%02d:%02d] ", \
(1900+tmp->tm_year), \
(1+tmp->tm_mon), \
tmp->tm_mday, \
tmp->tm_hour, \
tmp->tm_min, \
tmp->tm_sec); \
fprintf(stdout,"[NOTICE] %s:%s:%d:\t", __FILE__, __FUNCTION__, __LINE__); \
fprintf(stdout,__VA_ARGS__); \
fflush(stdout); \
}\
if (DEBUG_FILE == 1 ) \
{ \
FILE *fp = fopen(logfilename1,"a"); \
time(&timep); \
tmp=localtime(&timep); \
fprintf(fp,"[%4d-%02d-%02d %02d:%02d:%02d] ", \
(1900+tmp->tm_year), \
(1+tmp->tm_mon), \
tmp->tm_mday, \
tmp->tm_hour, \
tmp->tm_min, \
tmp->tm_sec); \
fprintf(fp,"[NOTICE] %s:%s:%d:\t", __FILE__, __FUNCTION__, __LINE__); \
fprintf(fp,__VA_ARGS__); \
if (ftell(fp)>MAXLOGSIZE) {\
fclose(fp);\
rename(logfilename1,logfilename2);\
}\
else \
fclose(fp); \
}\
}\
}
void d_common_log_set_level(d_log_level_t LogLevel)
{
g_LogLevel = LogLevel;
}
int main(int argc,char **argv)
{
d_common_log_set_level(LOG_LEVEL_DEBUG);
int i;
for (i=0;i<10000;i++) {
D_LOG_DEBUG("This is a Log %04d from FILE:%s LINE:%d\n",i, __FILE__, __LINE__);
sleep(1);
}
return 0;
}
相关文章推荐
- window下备份数据库到LinuxFTP服务器上并自动删除7天前数据备份文件
- 利用RMAN备份压缩技术对数据库做全备并备份控制文件和归档日志后删除已备份的归档日志
- SQL SERVER 设置自动备份和删除旧的数据库文件
- CentOS Linux自动备份文件到远程FTP服务器并删除指定日期前的备份Shell脚本
- sql server2008R2自动备份和自动删除过期bak文件
- SQL2005自动备份,定期删除的维护计划及自动定期清除日志
- SQL2000自动备份 压缩 删除(备份文件)
- Sql Server 备份文件管理(自动删除、过期)
- linux下mysql自动备份数据库与自动删除临时文件
- 项目文件自动备份及删除
- sql server2008 自动备份和自动删除过期bak文件
- 用备份控制文件做不完全恢复下的完全恢复(全备<老>--备份控制文件<次新>--删除表空间andy--日志文件<新>)
- SQL 维护计划(自动删除备份文件)
- windows服务器自动删除日志文件
- mssql自动备份及自动清除日志文件服务器设置
- SQL2005自动备份,定期删除的维护计划及自动定期清除日志
- log4net自动删除日志文件,摸索记录
- Centos自动删除过期备份或者文件
- bat实现文件的自动增量备份和删除
- Debian下自动备份文件并上传到远程FTP服务器且删除指定日期前的备份Shell脚本