Linux共享库 日志方法

Posted 庖丁解牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux共享库 日志方法相关的知识,希望对你有一定的参考价值。

mylog.h

#ifdef __cplusplus

extern "C"
{

}
#endif

//写日志函数
//path:日志文件名
//msg:日志信息
int writelog(const char *path, const char * msg);

#ifdef __cplusplus

}

#endif

 

mylog.c

//日志共享库
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <time.h>

//获取当前时间字符串
int Gettimestr(char * buf)
{
    time_t tData = 0;
    //获取当前系统时间
    time(&tData);
    //定义时间结构体变量
    struct tm * eventTime = NULL;
    //将time_t类型转化成时间结构体类型
    eventTime = localtime(&tData);
    //tm_year表示年份,以1900为标准,1900的值是0,1901的值是1
    int iyear = eventTime->tm_year + 1900;
    //tm_mon表示月份,从0开始到11结束,按照通常习惯应该从1月份开始
    int imon = eventTime->tm_mon + 1;
    //tm_wday:表示一个星期的第几天 从1开始7结束
    //tm_yday:表示一年的第几天
    //tm_mday:表示正常的月天数
    int iday = eventTime->tm_mday;
    //时分秒
    int ihour = eventTime->tm_hour;
    int imin = eventTime->tm_min;
    int isec = eventTime->tm_sec;
    //拼接时间
    char timestr[30] = { 0 };
    sprintf(timestr, "%04d-%02d-%02d %02d:%02d:%02d", iyear, imon, iday, ihour,
            imin, isec);
    strcpy(buf, timestr);
    return 0;
}

//写日志
int writelog(const char *path, const char * msg)
{
    if (path == NULL || msg == NULL)
    {
        printf("writelog() 传入参数不可以为空!\n");
        return -1;
    }
    //open the file stream
    FILE * pfa = NULL;
    pfa = fopen(path, "a");
    if (pfa == NULL)
    {
        printf("open the file failed ! error message : %s\n", strerror(errno));
        return -1;
    }
    char strtime[30] = { 0 };
    Gettimestr(strtime);
    char resultmsg[1024] = { 0 };
    sprintf(resultmsg, "%s \n \t %s\n", strtime, msg);
    fputs(resultmsg, pfa);
    fclose(pfa);
    pfa = NULL;
    return 0;
}

 

makefile

.SUFFIXES:.c .o
CC=gcc
SRCS=mylog.c
OBJS=$(SRCS:.c=.o)
EXEC=libmylog.so

start:$(OBJS)
    $(CC) -shared -o $(EXEC) $(OBJS)
    @echo "^_^-----OK------^_^"
.c.o:
    $(CC) -Wall -g -fPIC -o [email protected] -c $<
clean:
    rm -f $(OBJS)
    rm -f $(EXEC)

 

以上是关于Linux共享库 日志方法的主要内容,如果未能解决你的问题,请参考以下文章

Linux共享库 zlog日志

Linux Linux共享库

链接静态库 Vs。 Linux 中的共享库

常用python日期日志获取内容循环的代码片段

在为 LINUX 创建共享库时如何避免 STL 的私有/弱副本

Linux共享库静态库动态库详解