C 语言玩具版日志服务
log.h
#include <time.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef long long ll;
typedef struct log {
ll timeStamp;
char prefix[1024];
char message[1024];
void (*Println)(const char *message);
} Log;
char destination[1024];
char prefix[1024];
char* timeStamp() {
static char len[20] = {0};
time_t timep;
time(&timep);
struct tm *p = gmtime(&timep);
snprintf(len, 20, "%d-%d-%d %d:%d:%d ", 1900 + p->tm_year, 1 + p->tm_mon, p->tm_mday, 8 + p->tm_hour, p->tm_min, p->tm_sec);
return len;
}
void Println(const char _message[]) {
char message[1024];
char tfln[2] = "\n";
strcat(message, timeStamp());
strcat(message, prefix);
strcat(message, _message);
strcat(message, tfln);
FILE *fp = fopen(destination, "a+");
fwrite(message, 1, strlen(message), fp);
fclose(fp);
}
Log Log_Init(char _destination[1024], char _prefix[]) {
strcpy(prefix, _prefix);
strcpy(destination, _destination);
static Log log;
log.Println = Println;
return log;
}
main.c
#include "log.h"
int main() {
Log log = Log_Init("./data.log", "Logger ");
log.Println("hello world");
}
运行结果