日志记录方法总结

1. 自己写debuglog(),将日志写入指定日志文件。

包含三个函数

          void open_debug_log();// 打开日志文件

          void debug_log(int level, char*fmt...);// 记录日志

          void close_debug_log() // 关闭日志文件

==========================源码========================

#include <stdio.h>
#include <stdarg.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>

#define DEBUG_LOG_FILE "/tmp/debug.log"
#define DEBUG_LOG_SIZE 1024*1024
const int switch_on_off=1;

FILE *log_fp=NULL;

void open_debug_log()
{
 struct stat st;
 stat(DEBUG_LOG_FILE, &st);
 if(st.st_size > DEBUG_LOG_SIZE)
  log_fp=fopen(DEBUG_LOG_FILE, "w+");
 else
  log_fp=fopen(DEBUG_LOG_FILE, "a+");
}

void debug_log(int level, char *fmt, ...)
{
 if(!switch_on_off || !level)
   return;
 char tmp[1024]={0};
 va_list args;
 va_start(args,fmt);
 vsnprintf(tmp, sizeof(tmp), fmt, args);
 va_end(args);
 fprintf(log_fp,"%s\n", tmp);
}

void close_debug_log()
{

 if(log_fp)
        fclose(log_fp);

 log_fp=NULL;
}

==========================源码========================

2.将标准输出,标准出错重定向到指定文件。

 

#include <stdio.h>
#include <unistd.h>
int log_func(void)
{
 FILE *fp=fopen("./debug.log", "a+");
 dup2(fileno(fp),fileno(stdout) );
 dup2(fileno(fp),fileno(stderr) );
 fclose(fp);
 fprintf(stderr , "write to stderr\n");
 fprintf(stdout , "write to stdout\n");
 return 0;
}

3.借助系统日志文件syslog,将syslog重定向到指定文件。

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <syslog.h>
#include <unistd.h>

int main(void)
{

 int logfd=open("/tmp/server.log", O_RDWR|O_CREAT|O_APPEND, 0644);
 dup2(logfd, STDERR_FILENO);
 openlog(NULL, LOG_PERROR, LOG_DAEMON);
 syslog(LOG_DEBUG,"test syslog");
 closelog();}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值